From 04306ad01c685ceb14d0bd0428c28e94047c0a36 Mon Sep 17 00:00:00 2001 From: karlmichaelschindler <karlmichaelschindler@7e267752-d5d8-41c0-93cd-a7fa012602f9> Date: Fri, 11 Sep 2020 19:16:03 +0000 Subject: [PATCH] update call of doboson. add diagramm form with dummy chart. git-svn-id: svn+ssh://michael-ep3.physik.uni-halle.de/Users/Shared/EELS2@101 7e267752-d5d8-41c0-93cd-a7fa012602f9 --- source/Lazarus-GUI/EELS.lpi | 15 ++- source/Lazarus-GUI/EELS.lpr | 5 +- source/Lazarus-GUI/EELS.lps | 188 ++++++++++++++---------------- source/Lazarus-GUI/UDiagramm.lfm | 45 +++++++ source/Lazarus-GUI/UDiagramm.pas | 39 +++++++ source/Lazarus-GUI/UEELSBoson.pas | 8 +- source/Lazarus-GUI/UMainForm.pas | 41 ++++--- 7 files changed, 216 insertions(+), 125 deletions(-) create mode 100644 source/Lazarus-GUI/UDiagramm.lfm create mode 100644 source/Lazarus-GUI/UDiagramm.pas diff --git a/source/Lazarus-GUI/EELS.lpi b/source/Lazarus-GUI/EELS.lpi index bebe381..a0308f2 100644 --- a/source/Lazarus-GUI/EELS.lpi +++ b/source/Lazarus-GUI/EELS.lpi @@ -98,12 +98,15 @@ <FormatVersion Value="2"/> <Modes Count="0"/> </RunParams> - <RequiredPackages Count="1"> + <RequiredPackages Count="2"> <Item1> - <PackageName Value="LCL"/> + <PackageName Value="TAChartLazarusPkg"/> </Item1> + <Item2> + <PackageName Value="LCL"/> + </Item2> </RequiredPackages> - <Units Count="6"> + <Units Count="7"> <Unit0> <Filename Value="EELS.lpr"/> <IsPartOfProject Value="True"/> @@ -131,6 +134,12 @@ <Filename Value="../f90/doboson.f90"/> <IsPartOfProject Value="True"/> </Unit5> + <Unit6> + <Filename Value="UDiagramm.pas"/> + <IsPartOfProject Value="True"/> + <ComponentName Value="DiagrammForm"/> + <ResourceBaseClass Value="Form"/> + </Unit6> </Units> </ProjectOptions> <CompilerOptions> diff --git a/source/Lazarus-GUI/EELS.lpr b/source/Lazarus-GUI/EELS.lpr index eb04137..8adb1ad 100644 --- a/source/Lazarus-GUI/EELS.lpr +++ b/source/Lazarus-GUI/EELS.lpr @@ -7,9 +7,9 @@ uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} - Forms, Interfaces, + Forms, tachartlazaruspkg, Interfaces, { you can add units after this } - UMainForm; + UMainForm, UDiagramm; {$R *.res} @@ -18,6 +18,7 @@ begin Application.Scaled := True; Application.Initialize; Application.CreateForm(TMainForm, MainForm); + Application.CreateForm(TDiagrammForm, DiagrammForm); Application.Run; end. diff --git a/source/Lazarus-GUI/EELS.lps b/source/Lazarus-GUI/EELS.lps index 82de130..be97c18 100644 --- a/source/Lazarus-GUI/EELS.lps +++ b/source/Lazarus-GUI/EELS.lps @@ -2,11 +2,11 @@ <CONFIG> <ProjectSession> <Version Value="11"/> - <Units Count="11"> + <Units Count="12"> <Unit0> <Filename Value="EELS.lpr"/> <IsPartOfProject Value="True"/> - <CursorPos X="12" Y="12"/> + <CursorPos X="41" Y="21"/> <UsageCount Value="202"/> <Loaded Value="True"/> </Unit0> @@ -16,10 +16,8 @@ <ComponentName Value="MainForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <IsVisibleTab Value="True"/> <EditorIndex Value="1"/> - <TopLine Value="447"/> - <CursorPos Y="473"/> + <CursorPos X="25" Y="10"/> <UsageCount Value="202"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> @@ -27,197 +25,210 @@ <Unit2> <Filename Value="UEELSBoson.pas"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="2"/> - <TopLine Value="10"/> - <CursorPos X="30" Y="29"/> - <UsageCount Value="171"/> + <EditorIndex Value="3"/> + <TopLine Value="60"/> + <CursorPos Y="74"/> + <UsageCount Value="172"/> <Loaded Value="True"/> </Unit2> <Unit3> <Filename Value="UFileIO.pas"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="3"/> + <EditorIndex Value="4"/> <TopLine Value="61"/> <CursorPos X="32" Y="69"/> - <UsageCount Value="119"/> + <UsageCount Value="120"/> <Loaded Value="True"/> </Unit3> <Unit4> <Filename Value="../f90/doeels.f90"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="4"/> + <EditorIndex Value="5"/> <CursorPos Y="189"/> - <UsageCount Value="46"/> + <UsageCount Value="47"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="None"/> </Unit4> <Unit5> + <Filename Value="../f90/doboson.f90"/> + <IsPartOfProject Value="True"/> + <EditorIndex Value="6"/> + <CursorPos X="91"/> + <UsageCount Value="52"/> + <Loaded Value="True"/> + <DefaultSyntaxHighlighter Value="None"/> + </Unit5> + <Unit6> <Filename Value="/opt/sw/share/lazarus/lcl/grids.pas"/> <UnitName Value="Grids"/> <EditorIndex Value="-1"/> <TopLine Value="5257"/> <CursorPos Y="5270"/> <UsageCount Value="2"/> - </Unit5> - <Unit6> + </Unit6> + <Unit7> <Filename Value="/opt/sw/share/lazarus/lcl/include/wincontrol.inc"/> <EditorIndex Value="-1"/> <TopLine Value="8371"/> <CursorPos Y="8387"/> <UsageCount Value="1"/> - </Unit6> - <Unit7> + </Unit7> + <Unit8> <Filename Value="/opt/sw/share/lazarus/lcl/include/customedit.inc"/> <EditorIndex Value="-1"/> <TopLine Value="656"/> <CursorPos Y="672"/> <UsageCount Value="1"/> - </Unit7> - <Unit8> + </Unit8> + <Unit9> <Filename Value="/opt/sw/share/lazarus/lcl/forms.pp"/> <UnitName Value="Forms"/> <EditorIndex Value="-1"/> <TopLine Value="799"/> <CursorPos X="3" Y="750"/> <UsageCount Value="2"/> - </Unit8> - <Unit9> + </Unit9> + <Unit10> <Filename Value="/opt/sw/share/lazarus/lcl/include/control.inc"/> <EditorIndex Value="-1"/> <TopLine Value="3534"/> <CursorPos Y="3548"/> <UsageCount Value="4"/> - </Unit9> - <Unit10> - <Filename Value="../f90/doboson.f90"/> + </Unit10> + <Unit11> + <Filename Value="UDiagramm.pas"/> <IsPartOfProject Value="True"/> - <EditorIndex Value="5"/> - <CursorPos X="14" Y="129"/> - <UsageCount Value="51"/> + <ComponentName Value="DiagrammForm"/> + <ResourceBaseClass Value="Form"/> + <IsVisibleTab Value="True"/> + <EditorIndex Value="2"/> + <TopLine Value="10"/> + <CursorPos X="33" Y="35"/> + <UsageCount Value="21"/> <Loaded Value="True"/> - <DefaultSyntaxHighlighter Value="None"/> - </Unit10> + <LoadedDesigner Value="True"/> + </Unit11> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> <Filename Value="UMainForm.pas"/> - <Caret Line="155" Column="46" TopLine="133"/> + <Caret Line="482" TopLine="465"/> </Position1> <Position2> <Filename Value="UMainForm.pas"/> - <Caret Line="165" Column="46" TopLine="143"/> + <Caret Line="478" TopLine="465"/> </Position2> <Position3> <Filename Value="UMainForm.pas"/> - <Caret Line="173" Column="45" TopLine="151"/> + <Caret Line="481" TopLine="465"/> </Position3> <Position4> <Filename Value="UMainForm.pas"/> - <Caret Line="182" Column="43" TopLine="160"/> + <Caret Line="478" TopLine="465"/> </Position4> <Position5> <Filename Value="UMainForm.pas"/> - <Caret Line="190" Column="47" TopLine="168"/> + <Caret Line="481" TopLine="465"/> </Position5> <Position6> <Filename Value="UMainForm.pas"/> - <Caret Line="212" Column="53" TopLine="190"/> + <Caret Line="491" Column="22" TopLine="473"/> </Position6> <Position7> <Filename Value="UMainForm.pas"/> - <Caret Line="223" Column="56" TopLine="201"/> + <Caret Line="494" TopLine="473"/> </Position7> <Position8> <Filename Value="UMainForm.pas"/> - <Caret Line="394" Column="27" TopLine="381"/> + <Caret Line="493" TopLine="473"/> </Position8> <Position9> - <Filename Value="UMainForm.pas"/> - <Caret Line="393" Column="27" TopLine="380"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="50" TopLine="36"/> </Position9> <Position10> - <Filename Value="UMainForm.pas"/> - <Caret Line="392" Column="27" TopLine="379"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="112" TopLine="98"/> </Position10> <Position11> - <Filename Value="UMainForm.pas"/> - <Caret Line="391" Column="27" TopLine="378"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="113" TopLine="98"/> </Position11> <Position12> - <Filename Value="UMainForm.pas"/> - <Caret Line="390" Column="27" TopLine="377"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="115" TopLine="98"/> </Position12> <Position13> - <Filename Value="UMainForm.pas"/> - <Caret Line="389" Column="27" TopLine="376"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="149" Column="29" TopLine="142"/> </Position13> <Position14> - <Filename Value="UMainForm.pas"/> - <Caret Line="388" Column="27" TopLine="375"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Column="90"/> </Position14> <Position15> - <Filename Value="UMainForm.pas"/> - <Caret Line="387" Column="27" TopLine="374"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="22" Column="9"/> </Position15> <Position16> - <Filename Value="UMainForm.pas"/> - <Caret Line="386" Column="27" TopLine="373"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="35" Column="60" TopLine="11"/> </Position16> <Position17> - <Filename Value="UMainForm.pas"/> - <Caret Line="385" Column="27" TopLine="372"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="36" Column="34" TopLine="12"/> </Position17> <Position18> - <Filename Value="UMainForm.pas"/> - <Caret Line="383" Column="27" TopLine="370"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="236" Column="7" TopLine="212"/> </Position18> <Position19> - <Filename Value="UMainForm.pas"/> - <Caret Line="120" Column="37" TopLine="97"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="247" Column="18" TopLine="223"/> </Position19> <Position20> - <Filename Value="UMainForm.pas"/> - <Caret Line="128" Column="36" TopLine="106"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="248" Column="16" TopLine="224"/> </Position20> <Position21> - <Filename Value="UMainForm.pas"/> - <Caret Line="138" Column="42" TopLine="116"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="249" Column="16" TopLine="225"/> </Position21> <Position22> - <Filename Value="UMainForm.pas"/> - <Caret Line="146" Column="41" TopLine="124"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="263" Column="22" TopLine="239"/> </Position22> <Position23> - <Filename Value="UMainForm.pas"/> - <Caret Line="156" Column="41" TopLine="134"/> + <Filename Value="../f90/doboson.f90"/> + <Caret Line="264" Column="20" TopLine="240"/> </Position23> <Position24> <Filename Value="UMainForm.pas"/> - <Caret Line="164" Column="40" TopLine="142"/> + <Caret Line="493" Column="14" TopLine="468"/> </Position24> <Position25> <Filename Value="UMainForm.pas"/> - <Caret Line="174" Column="38" TopLine="152"/> + <Caret Line="478" TopLine="468"/> </Position25> <Position26> <Filename Value="UMainForm.pas"/> - <Caret Line="182" Column="42" TopLine="160"/> + <Caret Line="475" Column="34" TopLine="470"/> </Position26> <Position27> - <Filename Value="UMainForm.pas"/> - <Caret Line="211" Column="48" TopLine="189"/> + <Filename Value="UDiagramm.pas"/> + <Caret Line="19" Column="30"/> </Position27> <Position28> - <Filename Value="UMainForm.pas"/> - <Caret Line="276" Column="75" TopLine="257"/> + <Filename Value="UDiagramm.pas"/> + <Caret Line="24" Column="30"/> </Position28> <Position29> <Filename Value="UMainForm.pas"/> - <Caret Line="363" Column="96" TopLine="350"/> + <Caret Line="496" Column="31" TopLine="472"/> </Position29> <Position30> - <Filename Value="UMainForm.pas"/> - <Caret Line="181" Column="17" TopLine="179"/> + <Filename Value="UDiagramm.pas"/> + <Caret Line="34" Column="33" TopLine="10"/> </Position30> </JumpHistory> <RunParams> @@ -226,29 +237,6 @@ </RunParams> </ProjectSession> <Debugging> - <BreakPoints Count="3"> - <Item1> - <Kind Value="bpkSource"/> - <WatchScope Value="wpsLocal"/> - <WatchKind Value="wpkWrite"/> - <Source Value="UMainForm.pas"/> - <Line Value="472"/> - </Item1> - <Item2> - <Kind Value="bpkSource"/> - <WatchScope Value="wpsLocal"/> - <WatchKind Value="wpkWrite"/> - <Source Value="UMainForm.pas"/> - <Line Value="487"/> - </Item2> - <Item3> - <Kind Value="bpkSource"/> - <WatchScope Value="wpsLocal"/> - <WatchKind Value="wpkWrite"/> - <Source Value="../f90/doboson.f90"/> - <Line Value="104"/> - </Item3> - </BreakPoints> <Watches Count="1"> <Item1> <Expression Value="Top"/> diff --git a/source/Lazarus-GUI/UDiagramm.lfm b/source/Lazarus-GUI/UDiagramm.lfm new file mode 100644 index 0000000..5d6ef23 --- /dev/null +++ b/source/Lazarus-GUI/UDiagramm.lfm @@ -0,0 +1,45 @@ +object DiagrammForm: TDiagrammForm + Left = 384 + Height = 532 + Top = 134 + Width = 662 + Caption = 'DiagrammForm' + ClientHeight = 532 + ClientWidth = 662 + LCLVersion = '2.0.10.0' + object CloseButton: TButton + Left = 296 + Height = 25 + Top = 488 + Width = 75 + Caption = 'Close' + OnClick = CloseButtonClick + TabOrder = 0 + end + object SpectrumChart: TChart + Left = 44 + Height = 398 + Top = 42 + Width = 580 + AxisList = < + item + Marks.LabelBrush.Style = bsClear + Minors = <> + Title.LabelFont.Orientation = 900 + Title.LabelBrush.Style = bsClear + end + item + Alignment = calBottom + Marks.LabelBrush.Style = bsClear + Minors = <> + Title.LabelBrush.Style = bsClear + end> + Foot.Brush.Color = clBtnFace + Foot.Font.Color = clBlue + Title.Brush.Color = clBtnFace + Title.Font.Color = clBlue + Title.Text.Strings = ( + 'TAChart' + ) + end +end diff --git a/source/Lazarus-GUI/UDiagramm.pas b/source/Lazarus-GUI/UDiagramm.pas new file mode 100644 index 0000000..aaa53c4 --- /dev/null +++ b/source/Lazarus-GUI/UDiagramm.pas @@ -0,0 +1,39 @@ +unit UDiagramm; + +{$mode objfpc}{$H+} + +interface + +uses + Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, TAGraph; + +type + + { TDiagrammForm } + + TDiagrammForm = class(TForm) + SpectrumChart: TChart; + CloseButton: TButton; + procedure CloseButtonClick(Sender: TObject); + private + + public + + end; + +var + DiagrammForm: TDiagrammForm; + +implementation + +{$R *.lfm} + +{ TDiagrammForm } + +procedure TDiagrammForm.CloseButtonClick(Sender: TObject); +begin + DiagrammForm.Visible := false; +end; + +end. + diff --git a/source/Lazarus-GUI/UEELSBoson.pas b/source/Lazarus-GUI/UEELSBoson.pas index e5d1d05..f6bf1a3 100644 --- a/source/Lazarus-GUI/UEELSBoson.pas +++ b/source/Lazarus-GUI/UEELSBoson.pas @@ -48,6 +48,8 @@ var Title1: string; Title2: string; IntervalNW: Finteger; + xout, yout: array of Fdouble; + nout: Finteger; procedure doeels(var e0: Fdouble; var theta: Fdouble; @@ -76,12 +78,12 @@ procedure doboson(var t: Fdouble; var asym: Fdouble; var emin: Fdouble; var emax: Fdouble; - var title1: string; - var title2: string; var wmin: Fdouble; var wmax: Fdouble; var np: Finteger; - var p: array of Fdouble); + var p: array of Fdouble; + var xout, yout: array of Fdouble; + var nout: Finteger); cdecl; external name 'doboson_'; implementation diff --git a/source/Lazarus-GUI/UMainForm.pas b/source/Lazarus-GUI/UMainForm.pas index 9810e3a..bb50768 100644 --- a/source/Lazarus-GUI/UMainForm.pas +++ b/source/Lazarus-GUI/UMainForm.pas @@ -7,7 +7,7 @@ interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Grids, Menus, - UEELSBoson, UFileIO; + UEELSBoson, UDiagramm, UFileIO; type @@ -428,7 +428,7 @@ var Comment1_length: integer; LayerName_length: integer; Oscillator_length: integer; - i: integer; + i, j, index: integer; begin // todo: set the variables. NumberOfEpsilons := NumberOfLayers; @@ -449,20 +449,26 @@ begin Comment2 := Comment2Edit.Text; Comment1_length := 2*72; // EELS part 2 - LayerName[0] := Layergroup[0].NameEdit.Text; LayerName_length := 10; - TryStrToFloat(Layergroup[0].ThicknessEdit.Text, Thickness[0]); - TryStrToFloat(Layergroup[0].EpsilonEdit.Text, Epsilon[0]); - - NumberOfOscillators[0] := Layergroup[0].OsciStringGrid.RowCount - 1; - setlength(Oscillator, NumberOfOscillators[0]); - for i := 1 to NumberOfOscillators[0] do + Oscillator_length := 0; + for i := 0 to NumberOfLayers -1 do begin - TryStrToFloat(Layergroup[0].OsciStringGrid.Cells[0,i],Oscillator[i-1,1]); - TryStrToFloat(Layergroup[0].OsciStringGrid.Cells[1,i],Oscillator[i-1,2]); - TryStrToFloat(Layergroup[0].OsciStringGrid.Cells[2,i],Oscillator[i-1,3]); + LayerName[i] := Layergroup[i].NameEdit.Text; + TryStrToFloat(Layergroup[i].ThicknessEdit.Text, Thickness[i]); + TryStrToFloat(Layergroup[i].EpsilonEdit.Text, Epsilon[i]); + NumberOfOscillators[i] := Layergroup[i].OsciStringGrid.RowCount - 1; + Oscillator_length := Oscillator_length + NumberOfOscillators[i]; end; - Oscillator_length := NumberOfOscillators[0]; + setlength(Oscillator, Oscillator_length); + index := 0; + for i := 0 to NumberOfLayers -1 do + for j := 1 to NumberOfOscillators[i] do + begin + TryStrToFloat(Layergroup[i].OsciStringGrid.Cells[0,j],Oscillator[index,1]); + TryStrToFloat(Layergroup[i].OsciStringGrid.Cells[1,j],Oscillator[index,2]); + TryStrToFloat(Layergroup[i].OsciStringGrid.Cells[2,j],Oscillator[index,3]); + inc(index); + end; IntervalNW := 1 + round((IntervalWMax - IntervalWMin) / IntervalWDelta); setlength(Wn_Array, IntervalNW); @@ -482,11 +488,12 @@ begin TryStrToFloat(AsymmetryEdit.Text, Asymmetry); TryStrToFloat(EMinEdit.Text, EMin); TryStrToFloat(EMaxEdit.Text, EMax); - Title1 := Comment1; - Title2 := Comment2; + nout := 3000; + setlength(xout, nout); + setlength(yout, nout); doboson(TargetTemperature, InstrumentalWidth, GaussianFraction, Asymmetry, EMin, EMax, - Title1, Title2, IntervalWMin, IntervalWMax, IntervalNW, F_Array); - + IntervalWMin, IntervalWMax, IntervalNW, F_Array, xout, yout, nout); + DiagrammForm.Visible := true; end; end. -- GitLab