1 | src/Simulation.cpp: a simple model function |
---|
2 | * invoke main |
---|
3 | - Simulation.exe simulation.in simulation.out |
---|
4 | * read simulation.in |
---|
5 | - one column, three rows: x1, x2, x3 |
---|
6 | * write simulation.out |
---|
7 | - one value: x1*x2 + x3 + 2.0 |
---|
8 | |
---|
9 | src/simulation.template: file template for simulation.in |
---|
10 | * keys from a python dictionary of name and value (?) |
---|
11 | - one column, three rows: {X1}, {X2}, {X3} |
---|
12 | |
---|
13 | ======================================================================== |
---|
14 | test/dakota.in.template: dakota input file, without the "variables" section |
---|
15 | * edited by Concentration.exe |
---|
16 | - replaces value of 'evaluation_concurrency' with that from concentration.in |
---|
17 | * variables section |
---|
18 | - added by Concentration.exe (?) |
---|
19 | |
---|
20 | test/driver.sh: core diameter calculation script |
---|
21 | * invoke main |
---|
22 | - driver params.in.<num> results.out.<num> |
---|
23 | - where num ==> function_eval_num |
---|
24 | * params.in |
---|
25 | - dict of variable name = variable value, created by Dakota |
---|
26 | * results.out |
---|
27 | - value of the objective function returned to Dakota |
---|
28 | * <make a working directory for the function eval, and save param.in (to ?)> |
---|
29 | - simulation.x & simulation_prime.x, where x = in, out, get stored here |
---|
30 | * generate simulation.in, and run F(X) |
---|
31 | - dprepro param.in.<num> simulation.template simulation.in |
---|
32 | - Simulation.exe simulation.in simulation.out |
---|
33 | * generate simulation_prime.in, and run F(X') |
---|
34 | - (simulation_prime.template generated by Concentration.exe) |
---|
35 | - dprepro param.in.<num> simulation_prime.template simulation_prime.in |
---|
36 | - Simulation.exe simulation_prime.in simulation_prime.out |
---|
37 | * Compute |F(X)-F(X')|^2 |
---|
38 | - read "F" from simulation.out and "Fprime" from simulation_prime.out |
---|
39 | - "Fdiffsqrd" = -1.0 * (F-Fprime)^2 * CM_DK_SCALING |
---|
40 | - (CM_DK_SCALING generated (?) in ComputeDiameter.cc) |
---|
41 | * write results.out.<num> |
---|
42 | - echo "$Fdiffsqrd" > results.out.<num> |
---|
43 | |
---|
44 | test/Makefile: launch "simulation" or concentration-of-measure calculation |
---|
45 | * Simulation.exe simulation.in simulation.out |
---|
46 | - (see Simulation.cpp) |
---|
47 | * Concentration.exe -s concentration.in concentration.variables \ |
---|
48 | dakota.in.template concentration.diameters concentration.fxnevals \ |
---|
49 | concentration.metadata concentration.rstrt 2> concentration.err |
---|
50 | - (see main.cc) |
---|
51 | - files except concentration.x; x=in,variables created by Concentration.exe |
---|
52 | |
---|
53 | test/Dakota_Makefile: launch "serial" or parallel Dakota jobs |
---|
54 | * serial execution |
---|
55 | - dakota -input dakota.in -write_restart dakota.rst > dakota.out |
---|
56 | * parallel execution |
---|
57 | - mpirun -np 1 <serial execution call> |
---|
58 | |
---|
59 | test/dprepro: dakota input file pre-processor |
---|
60 | * replace {Xn} with values in param.in, write input file |
---|
61 | - dprepro param.in simulation.template simulation.in |
---|
62 | |
---|
63 | test/Application_Dakota_Makefile: red-headed step-child of Dakota_Makefile |
---|
64 | * ignore this file... simply a combination of Makefile & Dakota_Makefile |
---|
65 | - (see test/README for explaination) |
---|
66 | |
---|
67 | test/concentration.in: primary input file for Concentration.exe |
---|
68 | * UI to configure mpirun, optimization type, and random variable selection |
---|
69 | - (see src/README for explaination) |
---|
70 | |
---|
71 | test/concentration.variables: random variable declarations for dakota |
---|
72 | * UI to configure dakota parameter values (order, name, and bounds) |
---|
73 | - (see src/README for explaination) |
---|
74 | |
---|
75 | ======================================================================== |
---|
76 | src/MAKEDEPEND: includes for compiling *.cc files |
---|
77 | * header paths for x.o, where x=CM,RV,QN,GA,Dakota,Sample,ComputeDiameter,main |
---|
78 | - very hard-wired and very specific... and thus very fragile |
---|
79 | - is this input, or just a log? |
---|
80 | |
---|
81 | src/Makefile: compile source |
---|
82 | * x.exe, where x=Concentration,Simulation,DifferenceSquared,Scaling,Probability |
---|
83 | |
---|
84 | src/Probability.ccp: probability calculation |
---|
85 | * Compute exp(-2 * max(mean - threshold,0)^2 / diameter) |
---|
86 | - Probability.exe mean diameter threshold probability factor |
---|
87 | - "factor" used to scale "mean - threshold"; should be: 1 or -1 |
---|
88 | - assert(diameter > 0.0) |
---|
89 | - input files: mean, diameter, threshold |
---|
90 | - output files: probability |
---|
91 | - mean, diameter, threshold, and probability contain a single value (?) |
---|
92 | |
---|
93 | src/DifferenceSquared.ccp: difference squared calculation |
---|
94 | * Compute |F(X)-F(X')|^2 |
---|
95 | - DifferenceSquared.exe simulation.in simulation_prime.in difference |
---|
96 | - input files: simulation.in simulation_prime.in |
---|
97 | - output files: difference |
---|
98 | - simulation*.in is one column & three rows, difference is a single value (?) |
---|
99 | |
---|
100 | src/Scaling.cpp: scale the difference squared value (for the optimizer) |
---|
101 | * Multiply result from DifferenceSquared.cpp by scaling factor |
---|
102 | - Scaling.exe scaling scaling.in scaling.out |
---|
103 | - input files: scaling scaling.in |
---|
104 | - output files: scaling.out |
---|
105 | - scaling* is a single value (?) |
---|
106 | |
---|
107 | ======================================================================== |
---|
108 | src/main.cc: calculate concentration of measure |
---|
109 | * invoke main |
---|
110 | - Concentration.exe -s concentration.in concentration.variables \ |
---|
111 | dakota.in.template concentration.diameters concentration.fxnevals \ |
---|
112 | concentration.metadata concentration.rstrt 2> concentration.err |
---|
113 | * parse input files |
---|
114 | - read all args except concentration.x where x=rstrt,err |
---|
115 | * build Dakota "dak" object |
---|
116 | - init with: Concentration.exe, dakota.in.template, \ |
---|
117 | concentration.diameter, concentration.fxnevals |
---|
118 | * initialize (NOTE: assume not restarting) |
---|
119 | - dak.concentrationInputReader(concentration.in) |
---|
120 | - restartRVnumber = -1 |
---|
121 | * process dakota input data |
---|
122 | - dak.dakotaInputReader(concentration.variables,1) |
---|
123 | * save "concentration.metadata" (?) to $CM_DK_METADATA |
---|
124 | - ...don't know what this is for, or if it's necessary... |
---|
125 | * compute diameters |
---|
126 | - dak.runCM(1,concentration.metadata,concentration.rstrt,restartRVnumber) |
---|
127 | |
---|
128 | src/CM.cc: concentration-of-measure object |
---|
129 | * instantiate |
---|
130 | - constructor(concentration.diameter,concentration.fxnevals) |
---|
131 | * read CM from input file |
---|
132 | - concentrationInputReader(concentration.in) |
---|
133 | * check CM data read for validity |
---|
134 | - assert(cmNumberRVstart <= cmNumberRVs) |
---|
135 | - assert((cmNumberRVend <= cmNumberRVs)&&(cmNumberRVend >= cmNumberRVstart)) |
---|
136 | - assert(abs(dakotaScaling) >= 1.0e-15) |
---|
137 | - assert(machineComputeNodes >= 1) |
---|
138 | - assert(machineProcsPerNodes >= 1) |
---|
139 | - assert(dakotaEvaluationConcurrency >= 1) |
---|
140 | - assert(cmDiameterType <= 2) [actually: 0, 1, or 2] |
---|
141 | - assert(_temp_test_run == 'serial' or 'parallel') |
---|
142 | |
---|
143 | src/Dakota.cc: dakota input parameters (random variables) object |
---|
144 | * instantiate |
---|
145 | - constructor(Concentration.exe,dakota.in.template, \ |
---|
146 | concentration.diameters,concentration.fxnevals) |
---|
147 | * read parameters from input file |
---|
148 | - dakotaInputReader(concentration.variables,1) |
---|
149 | - set dakotaInputFileType = 1 |
---|
150 | * check parameters read for validity |
---|
151 | - assert(no random variable "duplicates" [bubble sort by descriptor_number]) |
---|
152 | |
---|
153 | ======================================================================== |
---|
154 | src/ComputeDiameter.cc: create dakota input file from input information |
---|
155 | * launch a concentration-of-measure (sub)diameter calculation |
---|
156 | - runCM(1,concentration.metadata,concentration.rstrt,restartRVnumber) |
---|
157 | - set dakotaInputFileType = 1 |
---|
158 | - build make_commands |
---|
159 | . test_run = "serial": "make -f Dakota_Makefile dak" |
---|
160 | . test_run = "parallel": "make -f Dakota_Makefile dakprocs PROCS=" + m*n |
---|
161 | where m = machineComputeNodes, n=machineProcsPerNode |
---|
162 | - set $CM_DK_ENDRV = cnNumberRVs |
---|
163 | - set $CM_DK_SCALING = dakotaScaling |
---|
164 | - create dakota Input File from scratch (i.e. dakotaInputFileType=0) |
---|
165 | . ...skip this, as it seems that always dakotaInputFileType=1... |
---|
166 | - create dakota Input File from template |
---|
167 | . if "not a restart" (i.e. restartRVnumber<0): RVstart = cmNumberRVstart |
---|
168 | . else RVstart = restartRVnumber |
---|
169 | . loop (i) from RVstart to cmNumberRVend |
---|
170 | - set $CM_DK_CURRENTRV = i |
---|
171 | - compute the diameter |
---|
172 | . createDAKOTAInputFileFromSample(i) |
---|
173 | . createPerturbedSimulationTemplate(i,cmNumberRVs) |
---|
174 | . execute "make_command" |
---|
175 | . recoverDAKOTAData(i) |
---|
176 | - write restart file, and issue "make clean" command |
---|
177 | * createDAKOTAInputFileGA |
---|
178 | - ...skipping; not used when dakotaInputFileType=1... |
---|
179 | * createDAKOTAInputFileQN |
---|
180 | - ...skipping; not used when dakotaInputFileType=1... |
---|
181 | * createDAKOTAInputFileFromSample |
---|
182 | - copy dakota.in.template to dakota.in |
---|
183 | . build sed command to modify dakota.in.template |
---|
184 | . use sed to update evaluation_concurrency, and save to dakota.in.temp |
---|
185 | . mv dakota.in.temp to dakota.in |
---|
186 | - if # of cdv > 0, add cdv-specific bounds and descriptor info to dakota.in |
---|
187 | . add entries for each cdv-type variable |
---|
188 | . if ith variable is cdv, then also add it as the (n+1)th variable |
---|
189 | . (n+1)th variable is named 'Xk' where k=numRVs+1 |
---|
190 | - similarly for the other variable types (i.e. ddv) |
---|
191 | * createPreturbedSimulationTemplate |
---|
192 | - copy simulation.template to simulation_prime.template |
---|
193 | . build sed command to change {Xi} to {X(cmNumberRVs+1)} |
---|
194 | . use sed to update tag name, and save to simulation_prime.template |
---|
195 | * recoverDAKOTAData |
---|
196 | - read function evaluations and diameter from dakota.out |
---|
197 | . read # of function evaluations, then store: (rvNum,fxnevals) |
---|
198 | . read diameter, then -diameter/dakotaScaling, then store: (rvNum,diameter) |
---|
199 | - move dakota.out to dakota.out.${CM_DK_CURRENTRV} |
---|
200 | - write diameter and function evaluations to file |
---|
201 | . write computed (sub)diameters to concentration.diameters (?) |
---|
202 | . write total_diameter (sum of sub-diameters) to concentration.diameters |
---|
203 | . write # of function_evals to concentration.fxnevals (?) |
---|
204 | . write total_function_evaluations (i.e. sum) to concentration.fxnevals |
---|
205 | * writeMetaDataFile |
---|
206 | - log currentrv,computed_Diameter,computed_FxnEval to concentration.metadata |
---|
207 | |
---|
208 | src/restart.cc: read/write restart data to restart file |
---|
209 | * write restart file |
---|
210 | - copy concentration.in info to concentration.rstrt |
---|
211 | - append (diameterNumber+1)... to restart after last completed loop |
---|
212 | - append rvname, computed diameters, and function_evaluations |
---|
213 | * read restart file info to "Dakota" object (i.e. 'dak') |
---|
214 | - read "concentration.in" info from concentration.rstrt |
---|
215 | - read diameterNumber |
---|
216 | - read rvname, computed diameters, and function_evaluations |
---|
217 | - return: diameterNumber |
---|
218 | |
---|
219 | |
---|
220 | ======================================================================== |
---|
221 | "Empty": src/GA.cc, src/QN.cc, src/RV.cc, src/Sample.cc |
---|
222 | |
---|