11 #include "../VariousFunctions/variousFunctions.h"
12 #include "../Exceptions/error.h"
13 #include "../Logging/Output.h"
14 #include "../VariousFunctions/erf.h"
24 bool ReadFromFile(
T &variable, ifstream ¶meters_file,
string variable_name,
string default_value =
"") {
29 parameters_file.clear();
30 parameters_file.seekg(0, ios::beg);
32 string word1=
"", word2=
"";
34 if (!parameters_file.eof()) {
35 while (parameters_file) {
38 parameters_file >> word1;
41 if (word2 == variable_name) {
42 parameters_file >> string_value;
50 if (string_value !=
"") {
56 }
else if (default_value !=
"") {
60 Output::echo(0,
"%s (default value)\n", ostr.str().c_str());
63 throw error_msg(
"ERROR",
"Parameter value %s was not found.\n", variable_name.c_str());
73 ifstream parameters_file;
74 parameters_file.open(filename.c_str());
75 if (parameters_file == NULL) {
76 throw error_msg(
"CONST_FILE_OPEN_ERR",
"Error reading %s for parameters.", filename.c_str());
86 timeStep = timeStep/24.0;
88 totalIterationsNumber = int(nDays/timeStep)+1;
90 ReadFromFile(useRadialDiffusion, parameters_file,
"useRadialDiffusion",
"true");
91 ReadFromFile(useAlphaDiffusion, parameters_file,
"useAlphaDiffusion",
"true");
92 ReadFromFile(useEnergyDiffusion, parameters_file,
"useEnergyDiffusion",
"true");
93 ReadFromFile(useEnergyAlphaMixedTerms, parameters_file,
"usePcAlphaMixedTerms",
"true");
95 if (useRadialDiffusion) {
97 ReadFromFile(DLLType, parameters_file,
"DLLType",
"DLLT_B");
100 Kp.AllocateMemory(totalIterationsNumber);
101 ReadFromFile(useKp, parameters_file,
"useKp",
string(
"file"));
102 if (useKp ==
"file") {
110 ReadFromFile(useBf, parameters_file,
"useBf",
string(
"file"));
111 Bf.AllocateMemory(totalIterationsNumber);
113 if (useBf ==
"file") {
118 }
else if (useBf ==
"constant") {
125 for (
int i = 0; i < totalIterationsNumber; i++) {
127 throw error_msg(
"BF_ERROR",
"Negative or zero Bf[time[%d]=%f]=%f after loading and interpolation.\n", i, timeStep*i, Bf[i]);
132 ReadFromFile(useLpp, parameters_file,
"useLpp",
string(
"No"));
133 Lpp.AllocateMemory(totalIterationsNumber);
134 if (useLpp ==
"file") {
135 ReadFromFile(fileLpp, parameters_file,
"fileLpp",
string(
""));
136 load_1d(Lpp, fileLpp, timeStep);
137 }
else if (useLpp ==
"constant") {
138 ReadFromFile(constLpp, parameters_file,
"constLpp",
"0.0");
140 }
else if (useLpp ==
"calculate" ||
str2bool(useLpp) ==
true) {
143 int iteration, back_it;
144 for (iteration = 0; iteration < totalIterationsNumber; iteration++) {
145 for (back_it = iteration; (fabs(timeStep * back_it - timeStep * iteration) <= 1.0) && (back_it >= 0); back_it--) {
146 Kp24 = (Kp24 > Kp[back_it]) ? Kp24 : Kp[back_it];
148 Lpp[iteration] = (5.6 - 0.46*Kp24);
157 ReadFromFile(usetau, parameters_file,
"usetau",
string(
"constant"));
158 tau.AllocateMemory(totalIterationsNumber);
159 if (usetau ==
"x/Kp") {
162 for (
int i = 0; i < totalIterationsNumber; i++) {
163 tau[i] = tmp_tau/
max(Kp[i], 0.01);
166 }
if (
str2bool(usetau) ==
true || usetau ==
"constant") {
173 ReadFromFile(usetauLpp, parameters_file,
"usetauLpp",
string(
"constant"));
174 tauLpp.AllocateMemory(totalIterationsNumber);
175 if (
str2bool(usetauLpp) ==
true || usetauLpp ==
"constant") {
183 ReadFromFile(outputModelMatrix, parameters_file,
"outputModelMatrix",
"false");
184 ReadFromFile(NoNegative, parameters_file,
"NoNegative",
"false");
185 ReadFromFile(useLossCone, parameters_file,
"useLossCone",
"true");
188 ReadFromFile(general_Output_parameters.timeStep, parameters_file,
"general_Output_parameters.timeStep",
"1");
189 ReadFromFile(general_Output_parameters.iterStep, parameters_file,
"general_Output_parameters.iterStep",
"1");
191 general_Output_parameters.timeStep = general_Output_parameters.timeStep/24.0;
192 ReadFromFile(general_Output_parameters.logFileName, parameters_file,
"general_Output_parameters.logFileName",
"logfile.log");
193 ReadFromFile(general_Output_parameters.folderName, parameters_file,
"general_Output_parameters.folderName",
"./");
194 ReadFromFile(general_Output_parameters.fileName1D, parameters_file,
"general_Output_parameters.fileName1D",
"Out1D.plt");
197 ReadFromFile(radialDiffusionGrid_type, parameters_file,
"radialDiffusionGrid_type");
198 ReadFromFile(localDiffusionsGrid_type, parameters_file,
"localDiffusionsGrid_type");
200 if (radialDiffusionGrid_type ==
"GT_FILE")
201 ReadFromFile(radialDiffusionGrid_filename, parameters_file,
"radialDiffusionGrid_filename");
202 if (localDiffusionsGrid_type ==
"GT_FILE")
203 ReadFromFile(localDiffusionsGrid_filename, parameters_file,
"localDiffusionsGrid_filename");
205 ReadFromFile(localDiffusionsGrid_L.name, parameters_file,
"localDiffusionsGrid_L.name",
string(
"L"));
206 ReadFromFile(localDiffusionsGrid_L.size, parameters_file,
"localDiffusionsGrid_L.size");
207 ReadFromFile(localDiffusionsGrid_L.useLogScale, parameters_file,
"localDiffusionsGrid_L.useLogScale");
208 ReadFromFile(localDiffusionsGrid_L.min, parameters_file,
"localDiffusionsGrid_L.min");
209 ReadFromFile(localDiffusionsGrid_L.max, parameters_file,
"localDiffusionsGrid_L.max");
212 ReadFromFile(localDiffusionsGrid_epc.name, parameters_file,
"localDiffusionsGrid_epc.name",
string(
"Energy, MeV"));
213 ReadFromFile(localDiffusionsGrid_epc.size, parameters_file,
"localDiffusionsGrid_epc.size");
214 ReadFromFile(localDiffusionsGrid_epc.useLogScale, parameters_file,
"localDiffusionsGrid_epc.useLogScale");
215 ReadFromFile(localDiffusionsGrid_epc.min, parameters_file,
"localDiffusionsGrid_epc.min");
216 ReadFromFile(localDiffusionsGrid_epc.max, parameters_file,
"localDiffusionsGrid_epc.max");
218 localDiffusionsGrid_pc = localDiffusionsGrid_epc;
219 localDiffusionsGrid_pc.min =
VF::pfunc(localDiffusionsGrid_epc.min);
220 localDiffusionsGrid_pc.max =
VF::pfunc(localDiffusionsGrid_epc.max);
222 ReadFromFile(localDiffusionsGrid_alpha.name, parameters_file,
"localDiffusionsGrid_alpha.name",
string(
"Pitch angle, deg"));
223 ReadFromFile(localDiffusionsGrid_alpha.size, parameters_file,
"localDiffusionsGrid_alpha.size");
224 ReadFromFile(localDiffusionsGrid_alpha.useLogScale, parameters_file,
"localDiffusionsGrid_alpha.useLogScale");
225 ReadFromFile(localDiffusionsGrid_alpha.min, parameters_file,
"localDiffusionsGrid_alpha.min");
226 ReadFromFile(localDiffusionsGrid_alpha.max, parameters_file,
"localDiffusionsGrid_alpha.max");
229 localDiffusionsGrid_alpha.min = localDiffusionsGrid_alpha.min*
VC::pi/180;
230 localDiffusionsGrid_alpha.max = localDiffusionsGrid_alpha.max*
VC::pi/180;
235 radialDiffusionGrid_L = localDiffusionsGrid_L;
236 radialDiffusionGrid_epc = localDiffusionsGrid_epc;
237 radialDiffusionGrid_alpha = localDiffusionsGrid_alpha;
238 radialDiffusionGrid_pc = localDiffusionsGrid_pc;
241 ReadFromFile(L_LowerBoundaryCondition.type, parameters_file,
"L_LowerBoundaryCondition.type",
"BCT_CONSTANT_PSD");
242 if (L_LowerBoundaryCondition.type ==
"BCT_FILE"
243 || L_LowerBoundaryCondition.type ==
"BCT_FILE_GRID"
244 || L_LowerBoundaryCondition.type ==
"BCT_MULTIPLE_FILES") {
245 ReadFromFile(L_LowerBoundaryCondition.filename, parameters_file,
"L_LowerBoundaryCondition.filename");
247 ReadFromFile(L_LowerBoundaryCondition.value, parameters_file,
"L_LowerBoundaryCondition.value",
"1e-9");
250 ReadFromFile(L_UpperBoundaryCondition.type, parameters_file,
"L_UpperBoundaryCondition.type",
"BCT_CONSTANT_PSD");
251 if (L_UpperBoundaryCondition.type ==
"BCT_FILE"
252 || L_UpperBoundaryCondition.type ==
"BCT_FILE_GRID"
253 || L_UpperBoundaryCondition.type ==
"BCT_MULTIPLE_FILES") {
254 ReadFromFile(L_UpperBoundaryCondition.filename, parameters_file,
"L_UpperBoundaryCondition.filename");
256 ReadFromFile(L_UpperBoundaryCondition.value, parameters_file,
"L_UpperBoundaryCondition.value",
"1e-9");
259 ReadFromFile(pc_LowerBoundaryCondition.type, parameters_file,
"pc_LowerBoundaryCondition.type",
"BCT_CONSTANT_PSD");
260 if (pc_LowerBoundaryCondition.type ==
"BCT_FILE"
261 || pc_LowerBoundaryCondition.type ==
"BCT_FILE_GRID"
262 || pc_LowerBoundaryCondition.type ==
"BCT_MULTIPLE_FILES") {
263 ReadFromFile(pc_LowerBoundaryCondition.filename, parameters_file,
"pc_LowerBoundaryCondition.filename");
265 ReadFromFile(pc_LowerBoundaryCondition.value, parameters_file,
"pc_LowerBoundaryCondition.value",
"1e-9");
268 ReadFromFile(pc_UpperBoundaryCondition.type, parameters_file,
"pc_UpperBoundaryCondition.type",
"BCT_CONSTANT_PSD");
269 if (pc_UpperBoundaryCondition.type ==
"BCT_FILE"
270 || pc_UpperBoundaryCondition.type ==
"BCT_FILE_GRID"
271 || pc_UpperBoundaryCondition.type ==
"BCT_MULTIPLE_FILES") {
272 ReadFromFile(pc_UpperBoundaryCondition.filename, parameters_file,
"pc_UpperBoundaryCondition.filename");
274 ReadFromFile(pc_UpperBoundaryCondition.value, parameters_file,
"pc_UpperBoundaryCondition.value",
"1e-9");
277 ReadFromFile(alpha_LowerBoundaryCondition.type, parameters_file,
"alpha_LowerBoundaryCondition.type",
"BCT_CONSTANT_PSD");
278 if (alpha_LowerBoundaryCondition.type ==
"BCT_FILE"
279 || alpha_LowerBoundaryCondition.type ==
"BCT_FILE_GRID"
280 || alpha_LowerBoundaryCondition.type ==
"BCT_MULTIPLE_FILES") {
281 ReadFromFile(alpha_LowerBoundaryCondition.filename, parameters_file,
"alpha_LowerBoundaryCondition.filename");
283 ReadFromFile(alpha_LowerBoundaryCondition.value, parameters_file,
"alpha_LowerBoundaryCondition.value",
"1e-9");
286 ReadFromFile(alpha_UpperBoundaryCondition.type, parameters_file,
"alpha_UpperBoundaryCondition.type",
"BCT_CONSTANT_PSD");
287 if (alpha_UpperBoundaryCondition.type ==
"BCT_FILE"
288 || alpha_UpperBoundaryCondition.type ==
"BCT_FILE_GRID"
289 || alpha_UpperBoundaryCondition.type ==
"BCT_MULTIPLE_FILES") {
290 ReadFromFile(alpha_UpperBoundaryCondition.filename, parameters_file,
"alpha_UpperBoundaryCondition.filename");
292 ReadFromFile(alpha_UpperBoundaryCondition.value, parameters_file,
"alpha_UpperBoundaryCondition.value",
"1e-9");
295 ReadFromFile(psdRadialDiffusion.initial_PSD_Kp0, parameters_file,
"psdRadialDiffusion.initial_PSD_Kp0",
"0.0");
297 if (psdRadialDiffusion.initial_PSD_Kp0 <= 1e-99) {
298 psdRadialDiffusion.initial_PSD_Kp0 = Kp[0];
299 Output::echo(0,
"psdRadialDiffusion.initial_PSD_Kp0 set to %f.\n", psdRadialDiffusion.initial_PSD_Kp0);
303 ReadFromFile(psdRadialDiffusion.initial_PSD_Type, parameters_file,
"psdRadialDiffusion.initial_PSD_Type",
"IPSDT_STEADY_STATE");
304 if (psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_STEADY_STATE"
305 || psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_STEADY_STATE_FROM_BOUNDARY") {
306 ReadFromFile(psdRadialDiffusion.initial_PSD_tauSteadyState, parameters_file,
"psdRadialDiffusion.initial_PSD_tauSteadyState",
"0.0");
307 if (psdRadialDiffusion.initial_PSD_tauSteadyState <= 1.e-98) {
308 psdRadialDiffusion.initial_PSD_tauSteadyState = 4.0/psdRadialDiffusion.initial_PSD_Kp0;
309 Output::echo(0,
"psdRadialDiffusion.initial_PSD_tauSteadyState set to %f.\n", psdRadialDiffusion.initial_PSD_tauSteadyState);
313 }
else if (psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_STEADY_STATE_TWO_ZONE") {
315 ReadFromFile(psdRadialDiffusion.initial_PSD_tauSteadyState, parameters_file,
"psdRadialDiffusion.initial_PSD_tauSteadyState",
"0.0");
316 if (psdRadialDiffusion.initial_PSD_tauSteadyState <= 1.e-98) {
317 psdRadialDiffusion.initial_PSD_tauSteadyState = 4.0/psdRadialDiffusion.initial_PSD_Kp0;
318 Output::echo(0,
"psdRadialDiffusion.initial_PSD_tauSteadyState set to %f.\n", psdRadialDiffusion.initial_PSD_tauSteadyState);
321 ReadFromFile(psdRadialDiffusion.usetauLpp_SteadyState, parameters_file,
"psdRadialDiffusion.usetauLpp_SteadyState",
string(
"combined"));
322 if (psdRadialDiffusion.usetauLpp_SteadyState ==
"constant") {
323 ReadFromFile(psdRadialDiffusion.initial_PSD_tauLppSteadyState, parameters_file,
"psdRadialDiffusion.initial_PSD_tauLppSteadyState");
326 }
else if (psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_FILE"
327 || psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_FILE_GRID"
328 || psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_ORBIT_FLUX_2D"){
332 ReadFromFile(psdRadialDiffusion.initial_PSD_fileName, parameters_file,
"psdRadialDiffusion.initial_PSD_fileName");
336 ReadFromFile(psdRadialDiffusion.initial_PSD_some_constant_value, parameters_file,
"psdRadialDiffusion.initial_PSD_some_constant_value",
"1e-99");
337 ReadFromFile(psdRadialDiffusion.initial_PSD_J_L7_function, parameters_file,
"psdRadialDiffusion.initial_PSD_J_L7_function",
"J_L7_corrected");
339 ReadFromFile(psdRadialDiffusion.initial_PSD_outer_psd, parameters_file,
"psdRadialDiffusion.initial_PSD_outer_psd",
"1.0");
340 ReadFromFile(psdRadialDiffusion.initial_PSD_inner_psd, parameters_file,
"psdRadialDiffusion.initial_PSD_inner_psd",
"0.0");
342 ReadFromFile(psdRadialDiffusion.output_PSD_folderName, parameters_file,
"psdRadialDiffusion.output_PSD_folderName", general_Output_parameters.folderName );
343 ReadFromFile(psdRadialDiffusion.output_PSD_fileName4D, parameters_file,
"psdRadialDiffusion.output_PSD_fileName4D",
"OutPSD_rad.dat");
345 ReadFromFile(psdRadialDiffusion.output_PSD_timeStep, parameters_file,
"psdRadialDiffusion.output_PSD_timeStep",
"1");
347 psdRadialDiffusion.output_PSD_timeStep = psdRadialDiffusion.output_PSD_timeStep/24.0;
349 psdRadialDiffusion.approximationMethod =
"AM_Split_C";
350 psdRadialDiffusion.solutionMethod =
"SM_Tridiag";
353 psdLocalDiffusions.initial_PSD_Type =
"IPSDT_CONSTANT";
354 psdLocalDiffusions.initial_PSD_some_constant_value = psdRadialDiffusion.initial_PSD_some_constant_value;
356 ReadFromFile(psdLocalDiffusions.output_PSD_folderName, parameters_file,
"psdLocalDiffusions.output_PSD_folderName", general_Output_parameters.folderName);
357 ReadFromFile(psdLocalDiffusions.output_PSD_fileName4D, parameters_file,
"psdLocalDiffusions.output_PSD_fileName4D",
string(
"OutPSD.dat"));
359 ReadFromFile(psdLocalDiffusions.output_PSD_timeStep, parameters_file,
"psdLocalDiffusions.output_PSD_timeStep",
"1");
361 psdLocalDiffusions.output_PSD_timeStep = psdLocalDiffusions.output_PSD_timeStep/24.0;
363 ReadFromFile(psdLocalDiffusions.approximationMethod, parameters_file,
"psdLocalDiffusions.approximationMethod",
"AM_Split_C");
364 if (psdLocalDiffusions.approximationMethod ==
"AM_Split_C" || psdLocalDiffusions.approximationMethod ==
"AM_Split_LR") {
365 ReadFromFile(psdLocalDiffusions.solutionMethod, parameters_file,
"psdLocalDiffusions.solutionMethod",
"SM_Tridiag");
367 ReadFromFile(psdLocalDiffusions.solutionMethod, parameters_file,
"psdLocalDiffusions.solutionMethod",
"SM_Relaxation");
369 if (psdLocalDiffusions.solutionMethod ==
"SM_GMRES" || psdLocalDiffusions.solutionMethod ==
"SM_GMRES2") {
370 ReadFromFile(psdLocalDiffusions.GMRES_parameters.SOL_maxiter, parameters_file,
"psdLocalDiffusions.GMRES_parameters.SOL_maxiter",
"100");
371 ReadFromFile(psdLocalDiffusions.GMRES_parameters.SOL_i_max, parameters_file,
"psdLocalDiffusions.GMRES_parameters.SOL_i_max",
"25");
372 ReadFromFile(psdLocalDiffusions.GMRES_parameters.SOL_max_iter_err, parameters_file,
"psdLocalDiffusions.GMRES_parameters.SOL_max_iter_err",
"1e-1");
373 ReadFromFile(psdLocalDiffusions.GMRES_parameters.preconditioner_type, parameters_file,
"psdLocalDiffusions.GMRES_parameters.preconditioner_type",
"none");
374 ReadFromFile(psdLocalDiffusions.GMRES_parameters.use_normalization, parameters_file,
"psdLocalDiffusions.GMRES_parameters.use_normalization",
"Yes");
379 ReadFromFile(SL.SL_L_top, parameters_file,
"SL.SL_L_top",
"false");
381 ReadFromFile(SL.SL_L_top_filename, parameters_file,
"SL.SL_L_top_filename");
383 ReadFromFile(SL.SL_E_min, parameters_file,
"SL.SL_E_min",
"false");
385 ReadFromFile(SL.SL_E_min_filename, parameters_file,
"SL.SL_E_min_filename");
389 ReadFromFile(interpolation.type, parameters_file,
"interpolation.type",
"IT_SPLINE");
390 ReadFromFile(interpolation.useLog, parameters_file,
"interpolation.useLog",
"Log_10");
391 ReadFromFile(interpolation.linearSplineCoef, parameters_file,
"interpolation.linearSplineCoef",
"1");
392 ReadFromFile(interpolation.maxSecondDerivative, parameters_file,
"interpolation.maxSecondDerivative",
"1e2");
399 if (psdRadialDiffusion.initial_PSD_Type ==
"IPSDT_STEADY_STATE_FROM_BOUNDARY"
400 && (L_UpperBoundaryCondition.type !=
"BCT_FILE"
401 && L_UpperBoundaryCondition.type !=
"BCT_FILE_GRID"
402 && L_UpperBoundaryCondition.type !=
"BCT_MULTIPLE_FILES")
403 )
throw error_msg(
"PARAMETERS_ERROR",
"Outer L boundary can not be used for PSD steady state, cause it is set to be created from PSD itself.");
405 if ((psdLocalDiffusions.approximationMethod ==
"AM_Block_LR" || psdLocalDiffusions.approximationMethod ==
"AM_Block_C") && !(localDiffusionsGrid_pc.size > 1 && localDiffusionsGrid_alpha.size > 1)) {
406 throw error_msg(
"BLOCK_WITH_1D",
"Block method can not be used with 1D");
409 if (localDiffusionsGrid_pc.size < 3 && useEnergyDiffusion)
410 throw error_msg(
"ERROR",
"Not enough grid points for energy diffusion (localDiffusionsGrid.pc.size = %d and useEnergyDiffusion = Yes)", localDiffusionsGrid_pc.size);
412 if (localDiffusionsGrid_alpha.size < 3 && useAlphaDiffusion)
413 throw error_msg(
"ERROR",
"Not enough grid points for pitch angle diffusion (localDiffusionsGrid.alpha.size = %d and useAlphaDiffusion = Yes)", localDiffusionsGrid_alpha.size);
415 if (localDiffusionsGrid_L.size < 3 && useRadialDiffusion)
416 throw error_msg(
"ERROR",
"Not enough grid points for radial diffusion (localDiffusionsGrid.L.size = %d and useRadialDiffusion = Yes)", localDiffusionsGrid_L.size);
419 parameters_file.seekg(0,ios::beg);
420 string word1=
"", word2=
"";
421 string string_value, dxx_parameters_file_name;
422 if (parameters_file != NULL) {
423 while (parameters_file) {
426 parameters_file >> word1;
429 if (word2 ==
"CoeffFileName") {
430 parameters_file >> dxx_parameters_file_name;
438 DxxParametersList.back().Load_dxx_parameters(dxx_parameters_file_name);
453 ifstream dxx_parameters_file;
454 dxx_parameters_file.open(dxx_parameters_file_name.c_str());
455 if (dxx_parameters_file == NULL) {
456 throw error_msg(
"DXX_PARAM_FILE_OPEN_ERR",
"Error reading diffusion coefficients parameters file %s.", dxx_parameters_file_name.c_str());
462 ReadFromFile(waveType, dxx_parameters_file,
"waveType");
463 ReadFromFile(waveName, dxx_parameters_file,
"waveType");
465 ReadFromFile(time_start, dxx_parameters_file,
"time_start");
466 ReadFromFile(time_end, dxx_parameters_file,
"time_end");
468 ReadFromFile(useScale, dxx_parameters_file,
"useScale",
"false");
473 ReadFromFile(loadOrCalculate, dxx_parameters_file,
"loadOrCalculate");
475 ReadFromFile(filetype, dxx_parameters_file,
"filetype");
476 ReadFromFile(filename, dxx_parameters_file,
"filename");
478 ReadFromFile(multiplicator, dxx_parameters_file,
"multiplicator",
"1.0");
479 ReadFromFile(MLT_averaging, dxx_parameters_file,
"MLT_averaging",
"1.0");
481 if (loadOrCalculate ==
"LOC_CALCULATE" || loadOrCalculate ==
"LOC_LOADORCALCULATE") {
482 ReadFromFile(numberDensity, dxx_parameters_file,
"numberDensity");
483 ReadFromFile(Omega_mType, dxx_parameters_file,
"Omega_mType");
486 ReadFromFile(omega_lc, dxx_parameters_file,
"omega_lc");
487 ReadFromFile(omega_uc, dxx_parameters_file,
"omega_uc");
492 ReadFromFile(BwFromLambda, dxx_parameters_file,
"BwFromLambda");
495 ReadFromFile(mirror_point_coeff, dxx_parameters_file,
"mirror_point_coeff",
"0.999");
497 ReadFromFile(lam_min, dxx_parameters_file,
"lam_min",
"0.0");
501 if (numberDensity ==
"ND_CONSTANT") {
504 ReadFromFile(particle, dxx_parameters_file,
"particle");
506 double sigma = (omega_uc - omega_lc) / (2.0 * d_omega);
511 if (Bw <= 0 && BwFromLambda ==
false) {
512 throw error_msg(
"DXX_ERROR",
"BwFromLambda is false and Bw = %f\n", Bw);
513 }
else if (BwFromLambda ==
true && Bw <= 0) {
527 istringstream(input) >> place;
535 istringstream(input) >> place;
560 if (str ==
"Yes" || str ==
"yes" || str ==
"1" || str ==
"True" || str ==
"true")
return true;
568 return (b==
true)?
"Yes":
"No";
585 ifstream input_1d(filename.c_str());
586 if (input_1d != NULL) {
587 vector <double> time1d, value1d;
588 double time_tmp, value_tmp;
589 while (!input_1d.eof()) {
591 input_1d >> time_tmp >> value_tmp;
592 time1d.push_back(time_tmp);
593 value1d.push_back(value_tmp);
598 for (
int it = 0; it < var.
size_x; it++) {
602 while (((++i) < (time1d.size()-1)) && time > time1d[i]) {
606 a = (time - time1d[i-1]) / (time1d[i] - time1d[i-1]);
607 var[it] = value1d[i-1] + a*(value1d[i] - value1d[i-1]);
610 throw error_msg(
"LOAD_1D_ERROR",
"Load 1d file error: file not found %f\n", filename.c_str());