From 943af6d08c3a3672b2375eb59d0b060defd20ab4 Mon Sep 17 00:00:00 2001 From: karlmichaelschindler <karlmichaelschindler@7e267752-d5d8-41c0-93cd-a7fa012602f9> Date: Tue, 22 Sep 2020 10:03:27 +0000 Subject: [PATCH] eelsin export working git-svn-id: svn+ssh://michael-ep3.physik.uni-halle.de/Users/Shared/EELS2@106 7e267752-d5d8-41c0-93cd-a7fa012602f9 --- source/Lazarus-GUI/EELS.lps | 113 +++++++++++++++--------------- source/Lazarus-GUI/UEELSBoson.pas | 3 + source/Lazarus-GUI/UFileIO.pas | 78 ++++++++++++++++++++- source/Lazarus-GUI/UMainForm.pas | 38 ++++++---- 4 files changed, 159 insertions(+), 73 deletions(-) diff --git a/source/Lazarus-GUI/EELS.lps b/source/Lazarus-GUI/EELS.lps index 619fd13..a69ccd9 100644 --- a/source/Lazarus-GUI/EELS.lps +++ b/source/Lazarus-GUI/EELS.lps @@ -16,10 +16,9 @@ <ComponentName Value="MainForm"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> - <IsVisibleTab Value="True"/> <EditorIndex Value="1"/> - <TopLine Value="269"/> - <CursorPos Y="397"/> + <TopLine Value="383"/> + <CursorPos X="6" Y="411"/> <UsageCount Value="202"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> @@ -28,16 +27,18 @@ <Filename Value="UEELSBoson.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="4"/> - <CursorPos Y="74"/> + <TopLine Value="28"/> + <CursorPos X="3" Y="40"/> <UsageCount Value="255"/> <Loaded Value="True"/> </Unit2> <Unit3> <Filename Value="UFileIO.pas"/> <IsPartOfProject Value="True"/> + <IsVisibleTab Value="True"/> <EditorIndex Value="3"/> - <TopLine Value="104"/> - <CursorPos X="40" Y="86"/> + <TopLine Value="167"/> + <CursorPos X="104" Y="184"/> <UsageCount Value="203"/> <Loaded Value="True"/> </Unit3> @@ -46,7 +47,7 @@ <IsPartOfProject Value="True"/> <EditorIndex Value="5"/> <CursorPos Y="189"/> - <UsageCount Value="134"/> + <UsageCount Value="135"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="None"/> </Unit4> @@ -55,7 +56,7 @@ <IsPartOfProject Value="True"/> <EditorIndex Value="6"/> <CursorPos X="91"/> - <UsageCount Value="139"/> + <UsageCount Value="140"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="None"/> </Unit5> @@ -66,8 +67,8 @@ <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <EditorIndex Value="2"/> - <CursorPos Y="4"/> - <UsageCount Value="108"/> + <CursorPos Y="14"/> + <UsageCount Value="109"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> </Unit6> @@ -97,123 +98,123 @@ <JumpHistory Count="30" HistoryIndex="29"> <Position1> <Filename Value="UMainForm.pas"/> - <Caret Line="344" Column="19" TopLine="322"/> + <Caret Line="363" Column="19" TopLine="341"/> </Position1> <Position2> <Filename Value="UMainForm.pas"/> - <Caret Line="345" Column="44" TopLine="323"/> + <Caret Line="364" Column="19" TopLine="342"/> </Position2> <Position3> <Filename Value="UMainForm.pas"/> - <Caret Line="347" Column="19" TopLine="325"/> + <Caret Line="365" Column="52" TopLine="343"/> </Position3> <Position4> <Filename Value="UMainForm.pas"/> - <Caret Line="348" Column="19" TopLine="326"/> + <Caret Line="366" Column="19" TopLine="344"/> </Position4> <Position5> <Filename Value="UMainForm.pas"/> - <Caret Line="349" Column="19" TopLine="327"/> + <Caret Line="255" TopLine="255"/> </Position5> <Position6> <Filename Value="UMainForm.pas"/> - <Caret Line="350" Column="19" TopLine="328"/> + <Caret Line="345" Column="89" TopLine="333"/> </Position6> <Position7> - <Filename Value="UMainForm.pas"/> - <Caret Line="351" Column="56" TopLine="329"/> + <Filename Value="UDiagramm.pas"/> + <Caret Line="4"/> </Position7> <Position8> <Filename Value="UMainForm.pas"/> - <Caret Line="352" Column="19" TopLine="330"/> + <Caret Line="384" Column="43" TopLine="374"/> </Position8> <Position9> <Filename Value="UMainForm.pas"/> - <Caret Line="353" Column="19" TopLine="331"/> + <Caret Line="253" TopLine="233"/> </Position9> <Position10> - <Filename Value="UMainForm.pas"/> - <Caret Line="354" Column="49" TopLine="332"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="86" Column="40" TopLine="81"/> </Position10> <Position11> <Filename Value="UMainForm.pas"/> - <Caret Line="355" Column="19" TopLine="333"/> + <Caret Line="391" TopLine="312"/> </Position11> <Position12> <Filename Value="UMainForm.pas"/> - <Caret Line="356" Column="21" TopLine="334"/> + <Caret Line="264" Column="53" TopLine="251"/> </Position12> <Position13> <Filename Value="UMainForm.pas"/> - <Caret Line="358" Column="19" TopLine="336"/> + <Caret Line="253" Column="57" TopLine="251"/> </Position13> <Position14> - <Filename Value="UMainForm.pas"/> - <Caret Line="359" Column="19" TopLine="337"/> + <Filename Value="UDiagramm.pas"/> + <Caret Line="4"/> </Position14> <Position15> - <Filename Value="UMainForm.pas"/> - <Caret Line="360" Column="19" TopLine="338"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="168" Column="9" TopLine="148"/> </Position15> <Position16> - <Filename Value="UMainForm.pas"/> - <Caret Line="361" Column="19" TopLine="339"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="167" Column="35" TopLine="141"/> </Position16> <Position17> - <Filename Value="UMainForm.pas"/> - <Caret Line="362" Column="59" TopLine="340"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="168" Column="12" TopLine="145"/> </Position17> <Position18> - <Filename Value="UMainForm.pas"/> - <Caret Line="363" Column="19" TopLine="341"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="169" Column="12" TopLine="146"/> </Position18> <Position19> - <Filename Value="UMainForm.pas"/> - <Caret Line="364" Column="19" TopLine="342"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="170" Column="12" TopLine="147"/> </Position19> <Position20> - <Filename Value="UMainForm.pas"/> - <Caret Line="365" Column="52" TopLine="343"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="171" Column="12" TopLine="148"/> </Position20> <Position21> - <Filename Value="UMainForm.pas"/> - <Caret Line="366" Column="19" TopLine="344"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="172" Column="12" TopLine="149"/> </Position21> <Position22> - <Filename Value="UMainForm.pas"/> - <Caret Line="255" TopLine="255"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="173" Column="12" TopLine="150"/> </Position22> <Position23> - <Filename Value="UMainForm.pas"/> - <Caret Line="345" Column="89" TopLine="333"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="174" Column="12" TopLine="151"/> </Position23> <Position24> - <Filename Value="UDiagramm.pas"/> - <Caret Line="4"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="175" Column="12" TopLine="152"/> </Position24> <Position25> - <Filename Value="UMainForm.pas"/> - <Caret Line="384" Column="43" TopLine="374"/> + <Filename Value="UDiagramm.pas"/> + <Caret Line="14"/> </Position25> <Position26> - <Filename Value="UMainForm.pas"/> - <Caret Line="253" TopLine="233"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="158" Column="26" TopLine="144"/> </Position26> <Position27> <Filename Value="UFileIO.pas"/> - <Caret Line="86" Column="40" TopLine="81"/> + <Caret Line="190" Column="26" TopLine="177"/> </Position27> <Position28> <Filename Value="UMainForm.pas"/> - <Caret Line="391" TopLine="312"/> + <Caret Line="77" Column="40" TopLine="220"/> </Position28> <Position29> <Filename Value="UMainForm.pas"/> - <Caret Line="264" Column="53" TopLine="251"/> + <Caret Line="403" Column="3" TopLine="233"/> </Position29> <Position30> - <Filename Value="UMainForm.pas"/> - <Caret Line="253" Column="57" TopLine="251"/> + <Filename Value="UFileIO.pas"/> + <Caret Line="184" Column="104" TopLine="167"/> </Position30> </JumpHistory> <RunParams> diff --git a/source/Lazarus-GUI/UEELSBoson.pas b/source/Lazarus-GUI/UEELSBoson.pas index f6bf1a3..7d5b64d 100644 --- a/source/Lazarus-GUI/UEELSBoson.pas +++ b/source/Lazarus-GUI/UEELSBoson.pas @@ -26,14 +26,17 @@ var Comment1: string; Comment2: string; Comment_size: Finteger; + Comment1_length: integer; NumberOfPeriodic: Finteger; NumberOfLayers: Finteger; NumberOfEpsilons: Finteger; LayerName: array of string; + LayerName_length: integer; Thickness: array of Fdouble; Epsilon: array of Fdouble; NumberOfOscillators: array of Finteger; Oscillator: array of Fosc_array; + Oscillator_length: integer; Control: string; Mode: string; Wn_Array: array of Fdouble; diff --git a/source/Lazarus-GUI/UFileIO.pas b/source/Lazarus-GUI/UFileIO.pas index e8a61b1..84990b0 100644 --- a/source/Lazarus-GUI/UFileIO.pas +++ b/source/Lazarus-GUI/UFileIO.pas @@ -33,7 +33,25 @@ procedure read_eelsin( var NumberOfOscillators: Tintegerarray; var Oscillator: Toscarray ); -procedure write_eelsin; +procedure write_eelsin( + const ImpactEnergy: double; + const IncidenceAngle: double; + const AngularAperturePhiA: double; + const AngularAperturePhiB: double; + const IntervalWMin: double; + const IntervalWMax: double; + const IntervalWDelta: double; + const Comment1: string; + const Comment2: string; + const NumberOfLayers: integer; + const NumberOfEpsilons: integer; + const NumberOfPeriodic: integer; + const LayerName: Tstringarray; + const Thickness: Tdoublearray; + const Epsilon: Tdoublearray; + const NumberOfOscillators: Tintegerarray; + const Oscillator: Toscarray + ); procedure read_bosin; procedure write_bosin; @@ -113,9 +131,63 @@ begin FileOpenDialog.Destroy; end; -procedure write_eelsin; +procedure write_eelsin( + const ImpactEnergy: double; + const IncidenceAngle: double; + const AngularAperturePhiA: double; + const AngularAperturePhiB: double; + const IntervalWMin: double; + const IntervalWMax: double; + const IntervalWDelta: double; + const Comment1: string; + const Comment2: string; + const NumberOfLayers: integer; + const NumberOfEpsilons: integer; + const NumberOfPeriodic: integer; + const LayerName: Tstringarray; + const Thickness: Tdoublearray; + const Epsilon: Tdoublearray; + const NumberOfOscillators: Tintegerarray; + const Oscillator: Toscarray + ); +var + eelsin: text; + i, j, index, Oscillator_length, here: integer; + FileSaveDialog: TSaveDialog; begin - + FileSaveDialog := TSaveDialog.Create(nil); + FileSaveDialog.Filename := 'eelsin'; + FileSaveDialog.Title := 'Save file eelsin as:'; + if not FileSaveDialog.Execute then + ShowMessage('Save file eelsin was cancelled') + else + begin + assign(eelsin, FileSaveDialog.FileName); + rewrite(eelsin); + writeln(eelsin, ImpactEnergy:10:2); + writeln(eelsin, IncidenceAngle:10:2); + writeln(eelsin, AngularAperturePhiA:10:2); + writeln(eelsin, AngularAperturePhiB:10:2); + writeln(eelsin, IntervalWMin:10:2); + writeln(eelsin, IntervalWMax:10:2); + writeln(eelsin, IntervalWDelta:10:2); + writeln(eelsin, Comment1); + writeln(eelsin, Comment2); + writeln(eelsin, NumberOfLayers:10, NumberOfPeriodic:10); + index := 0; + for i := 0 to NumberOfLayers - 1 do + begin + writeln(eelsin, Layername[i], thickness[i]:10:2); + writeln(eelsin, Epsilon[i]:10:2, NumberOfOscillators[i]:10); + for j := 1 to NumberOfOscillators[i] do + begin + writeln(eelsin, Oscillator[index][1]:10:2, Oscillator[index][2]:10:3, Oscillator[index][3]:10:3); + inc(index); + end; + end; + close(eelsin); + end; + FileSaveDialog.Destroy; end; procedure read_bosin; diff --git a/source/Lazarus-GUI/UMainForm.pas b/source/Lazarus-GUI/UMainForm.pas index d8563c1..6ddc3b0 100644 --- a/source/Lazarus-GUI/UMainForm.pas +++ b/source/Lazarus-GUI/UMainForm.pas @@ -74,6 +74,8 @@ type procedure CalculateButtonClick(Sender: TObject); + procedure Convert(Sender: TObject); + private LayerGroup: array of record NameLabel: TLabel; @@ -398,7 +400,11 @@ end; procedure TMainForm.EELSExportMenuItemClick(Sender: TObject); begin - write_eelsin; + Convert(self); + write_eelsin(ImpactEnergy, IncidenceAngle, AngularAperturePhiA, AngularAperturePhiB, + IntervalWMin, IntervalWMax, IntervalWDelta, Comment1, Comment2, + NumberOfLayers, NumberOfEpsilons, NumberOfPeriodic, LayerName, Thickness, + Epsilon, NumberOfOscillators, Oscillator); end; procedure TMainForm.BosonImportMenuItemClick(Sender: TObject); @@ -583,9 +589,23 @@ end; procedure TMainForm.CalculateButtonClick(Sender: TObject); var - Comment1_length: integer; - LayerName_length: integer; - Oscillator_length: integer; + i, j, index: integer; +begin + Convert(self); + doeels(ImpactEnergy, IncidenceAngle, AngularAperturePhiA, AngularAperturePhiB, + IntervalWMin, IntervalWMax, IntervalWDelta, Comment1, Comment1_length, + NumberOfLayers, NumberOfEpsilons, NumberOfPeriodic, LayerName, LayerName_length, + Thickness, Epsilon, NumberOfOscillators, Oscillator, Oscillator_length, + Control, Mode, Wn_Array, F_Array, IntervalNW); + + doboson(TargetTemperature, InstrumentalWidth, GaussianFraction, Asymmetry, EMin, EMax, + IntervalWMin, IntervalWMax, IntervalNW, F_Array, xout, yout, nout); + + DiagrammForm.Visible := true; +end; + +procedure TMainForm.Convert(Sender: TObject); +var i, j, index: integer; begin NumberOfEpsilons := NumberOfLayers; @@ -632,11 +652,6 @@ begin setlength(F_Array, IntervalNW); Control := ' '; Mode := ' '; - doeels(ImpactEnergy, IncidenceAngle, AngularAperturePhiA, AngularAperturePhiB, - IntervalWMin, IntervalWMax, IntervalWDelta, Comment1, Comment1_length, - NumberOfLayers, NumberOfEpsilons, NumberOfPeriodic, LayerName, LayerName_length, - Thickness, Epsilon, NumberOfOscillators, Oscillator, Oscillator_length, - Control, Mode, Wn_Array, F_Array, IntervalNW); // Boson part TryStrToFloat(TargetTemperatureEdit.Text, TargetTemperature); @@ -648,11 +663,6 @@ begin nout := 3000; setlength(xout, nout); setlength(yout, nout); - doboson(TargetTemperature, InstrumentalWidth, GaussianFraction, Asymmetry, EMin, EMax, - IntervalWMin, IntervalWMax, IntervalNW, F_Array, xout, yout, nout); - - DiagrammForm.Visible := true; end; - end. -- GitLab