diff --git a/source/f90/README b/source/f90/README index ccf36d5d575cc4fe29e013ebe57fe8d36c9abd39..52ef6fd1a2dc4e4815c7d3b41de22b303e7d8322 100644 --- a/source/f90/README +++ b/source/f90/README @@ -38,8 +38,9 @@ bosin: -500.0 emin 1200.0 emax -eels and eels-boson can also take the Kurosawa formula. This requires the -keyword 'kurosawa' in the line of the layers and periodicity and then two -lines of parameters for each oscillator. We need a nice example for this. +eels and eels-boson can also take the Kurosawa formula. This requires the +keyword 'kurosawa' as a third parameter in the line of the number of layers +and periodicity and then two lines of parameters for each oscillator. We +need a nice example for this. -K.-M. Sch. \ No newline at end of file +K.-M. Sch. diff --git a/source/f90/eels-boson-profile b/source/f90/eels-boson-profile new file mode 100755 index 0000000000000000000000000000000000000000..787d92896228ddc3ea9689353c6fe1f178f65636 Binary files /dev/null and b/source/f90/eels-boson-profile differ diff --git a/source/f90/eels-boson-profile.f90 b/source/f90/eels-boson-profile.f90 new file mode 100644 index 0000000000000000000000000000000000000000..516c51b00cca7d9e761b5d087c67e93caae206aa --- /dev/null +++ b/source/f90/eels-boson-profile.f90 @@ -0,0 +1,128 @@ +program eels_boson + +! ****************************************************************** +! * * +! * Does the calculation for one fixed example for profiling * +! * It does not do any file IO * +! * * +! ****************************************************************** + + implicit none + + double precision :: e0, theta, phia, phib, wmin, wmax, dw + integer :: i, j, jos, k, l, layers, neps, nper, nw + logical :: user + character (len = 72) :: comment(2) + character (len = 10) :: contrl, mode + double precision, allocatable :: xout(:), yout(:) + integer :: nout + + double precision, allocatable :: thick(:), epsinf(:), osc(:, :) + integer, allocatable :: nos(:) + character (len = 10), allocatable :: name(:) + double precision, allocatable :: wn_array(:), f(:) + + integer :: old_size_1, old_size_2 + double precision, allocatable :: tmp_osc(:, :) + + double precision :: asym, emax, emin, gauss, t, width + integer :: ioStatus + +! *** set spectrometer parameters + +! impact energy (ev) + e0 = 4.0 +! incidence angle (%) + theta = 60.0 +! angular apertures of the elliptic detector (%) + phia = 1.8 + phib = 1.8 +! energy-loss interval and step size (cm**-1) + wmin = 50.0 + wmax = 700.0 + dw = 2.0 +! comment lines + comment(1) = 'WFW: MnO layer on metal' + comment(1) = '' + +! *** set target specifications + + layers = 2 + nper = 1 + mode = '' + user = layers == 0 + if (.not. user) then + neps = layers + if (nper == -1) then + neps = layers + 1 + nper = 1 + endif + jos = 0 + allocate (name(neps), thick(neps), epsinf(neps), nos(neps), osc(3,neps)) + name(1) = 'MnO' + thick(1) = 994.0 + epsinf(1) = 4.95 + nos(1) = 1 + + osc(1, 1) = 269.0 + osc(2, 1) = 16.0 + osc(3, 1) = 5.0E-02 + + name(2) = 'Platinum' + thick(2) = 1000.00 + epsinf(2) = 8.90 + nos(2) = 1 + + osc(1, 2) = 160000.0 + osc(2, 2) = -1 + osc(3, 2) = 12.0E-02 + + contrl = '' + endif + + nw = 1 + int((wmax - wmin) / dw) + allocate (wn_array(nw), f(nw)) + + do i = 1, 100 + call doeels(e0, theta, phia, phib, wmin, wmax, dw, comment, size(comment), & + layers, neps, nper, name, size(name), thick, epsinf, nos, osc, size(osc, 2),& + contrl, mode, wn_array, f, size(wn_array)) + enddo + +! target temperature (Kelvin) + t = 300.0 +! width of the instrumental response (cm**-1) + width = 25.0 +! fraction of gaussian for the instrumental response + gauss = 0.5 +! asymmetry of the instrumental response + asym = 0.3 +! lower and upper energy losses for this computation (cm**-1) + emin = -500.0 + emax = 1200.0 + +! length calculation for xout, yout. +! not done yet. + nout = 2**14 + allocate (xout(nout)) + allocate (yout(nout)) + + do i = 1, 100 + call doboson(t, width, gauss, asym, emin, emax, & + wmin, wmax, nw, f, xout, yout, nout) + enddo + + deallocate (xout, yout) + + stop 'Successful end!' + +101 format(i3, ' layer(s), nper = ', i2//' l', 2x, 'material', 7x, & + 'thickness', 5x, 'epsinf', 4x, 'wto , wp', 5x, 'q', 7x, 'gam/wto') +102 format(a10, d15.5) +103 format(1x, 72('-')) +104 format(1x, i3, 2x, a10, g15.3, f10.4, f12.4, f10.4, f9.4) +105 format(31x, f10.4, f12.4, f10.4, f9.4) +106 format(45x, 'wlo , wp', 5x, 'q', 7x, 'gam/wlo') +107 format(45x, 28('-')) +108 format(41x, f12.4, f10.4, f9.4) +end program eels_boson diff --git a/source/f90/eels-boson.f90 b/source/f90/eels-boson.f90 index ba9b6c001be23b3322989145990ee50e8acd09a5..33a17e1caddfbd0f2f608ec22def97fb9c2b4ffa 100644 --- a/source/f90/eels-boson.f90 +++ b/source/f90/eels-boson.f90 @@ -132,10 +132,12 @@ program eels_boson nw = 1 + int((wmax - wmin) / dw) allocate (wn_array(nw), f(nw)) + do i = 1, 1000 call doeels(e0, theta, phia, phib, wmin, wmax, dw, comment, size(comment), & layers, neps, nper, name, size(name), thick, epsinf, nos, osc, size(osc, 2),& contrl, mode, wn_array, f, size(wn_array)) - + enddo + open(unit = 13, file = 'bosin') ! target temperature (Kelvin) read(13, *) t @@ -163,8 +165,10 @@ program eels_boson allocate (xout(nout)) allocate (yout(nout)) + do i = 1, 1000 call doboson(t, width, gauss, asym, emin, emax, & wmin, wmax, nw, f, xout, yout, nout) + enddo open(unit = 14, file = 'bosou') write(14, '(a, a, f6.1, a, f5.2)') comment(1), 'T =', t, ' GAUSS =', gauss diff --git a/source/f90/gprof/Makefile b/source/f90/gprof/Makefile index 62033e5bb27a068ccb2c7576d08d28bf18aaa767..1834c5bdc41d1045a0f44801553cd0c7d9681e63 100644 --- a/source/f90/gprof/Makefile +++ b/source/f90/gprof/Makefile @@ -47,33 +47,33 @@ profile: boson eels eels-boson ./eelsf90 ./bosonf90 ./eels-boson - - change_working_dir - - gprof bosonf90-boson - gprof doboson - gprof sicot - gprof sintr - gprof rcffi - gprof respon - - gprof eelsf90-eels - gprof doeels - gprof fint1 - gprof fint2 - gprof fint3 - gprof fun - gprof o1 - gprof o2 - gprof phint - gprof qrat - gprof quanc8 - gprof queels - gprof seteps - gprof surlos - gprof usurlo - - gprof eels-boson-eels-boson + + gprof change_working_dir.o + + gprof bosonf90 + gprof doboson.o + gprof sicot.o + gprof sintr.o + gprof rcffi.o + gprof respon.o + + gprof eelsf90 + gprof doeels.o + gprof fint1.o + gprof fint2.o + gprof fint3.o + gprof fun.o + gprof o1.o + gprof o2.o + gprof phint.o + gprof qrat.o + gprof quanc8.o + gprof queels.o + gprof seteps.o + gprof surlos.o + gprof usurlo.o + + gprof eels-boson clean: rm -f *.o diff --git a/source/f90/gprof/gmon.out b/source/f90/gprof/gmon.out new file mode 100644 index 0000000000000000000000000000000000000000..7496a24995310b3d70148227d5cc40c2dada8231 Binary files /dev/null and b/source/f90/gprof/gmon.out differ diff --git a/tests/von Florian/Kommentar von Florian.txt b/tests/von Florian/Kommentar von Florian.txt index 185e9df16d77f167c385b79e517245aca570d87c..1150a8531d52609e09df270b428b90f921c9ce10 100644 --- a/tests/von Florian/Kommentar von Florian.txt +++ b/tests/von Florian/Kommentar von Florian.txt @@ -1,8 +1,12 @@ Hallo Micha, -anbei 2 Input Files EELSIN, BOSIN, welche das EELS Spektrum für einen NiO Einkristall erstellen (BOSOU). +anbei 2 Input Files EELSIN, BOSIN, welche das EELS Spektrum für einen NiO +Einkristall erstellen (BOSOU). -In Untitled-2 sind zwei Formel: Die erste ist das Erweiterte Modell um die Dielektrische Funktion zu rechnen. Die zweite Formel ist für metallische Substrate, wenn man dünne Filme rechnen will. Die Parameter Sets für die dielektrische Funktion von STO und Ag als Substrat sind dort auch noch. +In Untitled-2 sind zwei Formel: Die erste ist das Erweiterte Modell um die +Dielektrische Funktion zu rechnen. Die zweite Formel ist für metallische +Substrate, wenn man dünne Filme rechnen will. Die Parameter Sets für die +dielektrische Funktion von STO und Ag als Substrat sind dort auch noch. Grüße