[us-commits] r2739 - in trunk: programs/us_fematch programs/us_mpi_analysis utils
svn at svn.aucsolutions.com
svn at svn.aucsolutions.com
Wed Apr 24 13:57:08 MDT 2019
Author: gegorbet
Date: 2019-04-24 19:57:07 +0000 (Wed, 24 Apr 2019)
New Revision: 2739
Modified:
trunk/programs/us_fematch/us_fematch.cpp
trunk/programs/us_mpi_analysis/2dsa_master.cpp
trunk/programs/us_mpi_analysis/2dsa_worker.cpp
trunk/programs/us_mpi_analysis/us_mpi_analysis.cpp
trunk/programs/us_mpi_analysis/us_mpi_analysis.h
trunk/utils/us_astfem_rsa.cpp
Log:
mods to backend mpi_analysis to do fit-bottom and fit-meniscus+bottom
Modified: trunk/programs/us_fematch/us_fematch.cpp
===================================================================
--- trunk/programs/us_fematch/us_fematch.cpp 2019-04-24 06:11:54 UTC (rev 2738)
+++ trunk/programs/us_fematch/us_fematch.cpp 2019-04-24 19:57:07 UTC (rev 2739)
@@ -2087,7 +2087,8 @@
simparams.radial_resolution = (double)( radhi - radlo ) / ( nconc - 1 );
// simparams.bottom = simparams.bottom_position;
DbgLv(1) << "SimMdl: simpoints" << simparams.simpoints
- << "rreso" << simparams.radial_resolution;
+ << "rreso" << simparams.radial_resolution
+ << "bottom_sim" << simparams.bottom << "bottom_dat" << edata->bottom;
//simparams.meniscus = 5.8;
//sdata.scanData.resize( total_scans );
Modified: trunk/programs/us_mpi_analysis/2dsa_master.cpp
===================================================================
--- trunk/programs/us_mpi_analysis/2dsa_master.cpp 2019-04-24 06:11:54 UTC (rev 2738)
+++ trunk/programs/us_mpi_analysis/2dsa_master.cpp 2019-04-24 19:57:07 UTC (rev 2739)
@@ -22,12 +22,39 @@
if ( mc_iterations > 1 )
max_iterations = max_iters_all > 1 ? max_iters_all : 5;
+ menibott_ndx = 0;
+ meniscus_run = 0;
+ bottom_run = 0;
+ if ( fit_mb_select == 0 )
+ {
+ menibott_count = 1;
+ meniscus_points = 1;
+ bottom_points = 1;
+ }
+ else if ( fit_menbot )
+ {
+ menibott_count = meniscus_points * bottom_points;
+ }
+ else if ( fit_meni )
+ {
+ menibott_count = meniscus_points;
+ bottom_points = 1;
+ }
+ else if ( fit_bott )
+ {
+ menibott_count = bottom_points;
+ meniscus_points = 1;
+ }
+
while ( true )
{
int worker;
- meniscus_value = meniscus_values.size() == 1 ?
- data_sets[ current_dataset ]->run_data.meniscus :
- meniscus_values[ meniscus_run ];
+ meniscus_value = ( meniscus_points == 1 )
+ ? data_sets[ current_dataset ]->run_data.meniscus
+ : meniscus_values[ meniscus_run ];
+ bottom_value = ( bottom_points == 1 )
+ ? data_sets[ current_dataset ]->run_data.bottom
+ : bottom_values [ bottom_run ];
//if ( max_depth > 1 )
// DbgLv(1) << " master loop-TOP: jq-empty?" << job_queue.isEmpty() << " areReady?" << worker_status.contains(READY)
// << " areWorking?" << worker_status.contains(WORKING);
@@ -64,11 +91,23 @@
progress += "; MonteCarlo: "
+ QString::number( mc_iteration + 1 );
- else if ( meniscus_values.size() > 1 )
+ else if ( fit_menbot )
progress += "; Meniscus: "
- + QString::number( meniscus_value, 'f', 3 )
+ + QString::number( meniscus_value, 'f', 4 )
+ + "; Bottom: "
+ + QString::number( bottom_value, 'f', 4 )
+ + QString().sprintf( " ( m%2d b%2d )",
+ ( meniscus_run + 1 ), ( bottom_run + 1 ) );
+ else if ( fit_meni )
+ progress += "; Meniscus: "
+ + QString::number( meniscus_value, 'f', 4 )
+ tr( " (%1 of %2)" ).arg( meniscus_run + 1 )
- .arg( meniscus_values.size() );
+ .arg( meniscus_points );
+ else if ( fit_bott )
+ progress += "; Bottom: "
+ + QString::number( bottom_value, 'f', 4 )
+ + tr( " (%1 of %2)" ).arg( bottom_run + 1 )
+ .arg( bottom_points );
else
progress += "; RMSD: "
+ QString::number( sqrt( simulation_values.variance ) );
@@ -121,7 +160,7 @@
write_output();
// Fit meniscus
- if ( ( meniscus_run + 1 ) < meniscus_values.size() )
+ if ( ( menibott_ndx + 1 ) < menibott_count )
{
set_meniscus();
}
@@ -178,27 +217,39 @@
DbgLv(1) << " master loop-BOT: cds kds" << current_dataset << count_datasets;
if ( current_dataset < count_datasets )
{
+ menibott_ndx = 0;
meniscus_run = 0;
+ bottom_run = 0;
iterations = 1;
mc_iteration = 0;
- if ( meniscus_points > 1 )
- { // Reset the range of fit-meniscus points for this data set
+ if ( menibott_count > 1 )
+ { // Reset the range of fit-meniscus/bottom points for this data set
US_DataIO::EditedData* edata
= &data_sets[ current_dataset ]->run_data;
- double men_str = edata->meniscus - meniscus_range / 2.0;
- double men_inc = meniscus_range / ( meniscus_points - 1.0 );
double dat_str = edata->radius( 0 );
+ double men_dpt = ( meniscus_points > 1 ) ?
+ (double)( meniscus_points - 1 ) : 1;
+ double bot_dpt = ( bottom_points > 1 ) ?
+ (double)( bottom_points - 1 ) : 1;
+ double men_str = edata->meniscus - ( meniscus_range * 0.5 );
+ double bot_str = edata->bottom - ( bottom_range * 0.5 );
+ double men_inc = meniscus_range / men_dpt;
+ double bot_inc = bottom_range / bot_dpt;
double men_end = men_str + meniscus_range - men_inc;
if ( men_end >= dat_str )
{ // Adjust first meniscus so range remains below data range
- men_end = dat_str - men_inc / 2.0;
+ men_end = dat_str - ( men_inc * 0.5 );
men_str = men_end - meniscus_range + men_inc;
}
for ( int ii = 0; ii < meniscus_points; ii++ )
meniscus_values[ ii ] = men_str + men_inc * ii;
-DbgLv(1) << " master loop-BOT: menpt" << meniscus_points << "mv0 mvn"
+ for ( int ii = 0; ii < bottom_points; ii++ )
+ bottom_values[ ii ] = bot_str + bot_inc * ii;
+DbgLv(0) << " master loop-BOT: menpt" << meniscus_points << "mv0 mvn"
<< meniscus_values[0] << meniscus_values[meniscus_points-1]
+ << "botpt" << bottom_points << "bv0 bvn"
+ << bottom_values[0] << bottom_values[bottom_points-1]
<< "gcores_count" << gcores_count;
}
@@ -267,10 +318,10 @@
{
calculated_solutes.clear();
orig_solutes.clear();
- simulation_values.noisflag = parameters[ "tinoise_option" ].toInt() > 0 ?
- 1 : 0;
- simulation_values.noisflag += parameters[ "rinoise_option" ].toInt() > 0 ?
- 2 : 0;
+ simulation_values.noisflag = ( parameters[ "tinoise_option" ].toInt() > 0 ?
+ 1 : 0 )
+ + ( parameters[ "rinoise_option" ].toInt() > 0 ?
+ 2 : 0 );
simulation_values.dbg_level = dbg_level;
simulation_values.dbg_timing = dbg_timing;
DbgLv(0) << "DEBUG_LEVEL" << simulation_values.dbg_level;
@@ -305,7 +356,6 @@
int nsstep = (int)( s_pts );
int nkstep = (int)( ff0_pts );
- //grid_reps = US_Math2::best_grid_reps( nsstep, nkstep );
DbgLv(0) << "InSol: nss nks" << s_pts << ff0_pts << nsstep << nkstep << "grid_reps" << grid_reps;
US_Solute::init_solutes( s_min, s_max, nsstep,
@@ -535,8 +585,30 @@
// Reset for a fit-meniscus iteration
void US_MPI_Analysis::set_meniscus( void )
{
- meniscus_run++;
+ menibott_ndx++;
+ if ( fit_menbot )
+ {
+ meniscus_run = menibott_ndx / meniscus_points;
+ bottom_run = menibott_ndx % meniscus_points;
+ }
+ else if ( fit_meni )
+ {
+ meniscus_run = menibott_ndx;
+ }
+ else if ( fit_bott )
+ {
+ bottom_run = menibott_ndx;
+ }
+ else
+ {
+DbgLv(0) << "FMB:set_meniscus: HUH????: mb m b:"
+ << fit_menbot << fit_meni << fit_bott;
+ }
+DbgLv(0) << "FMB:set_meniscus: mb_ndx men_run bot_run"
+ << menibott_ndx << meniscus_run << bottom_run << "mb m b mbc"
+ << fit_menbot << fit_meni << fit_bott << menibott_count;
+
// We incremented meniscus_run above. Just rerun from the beginning.
for ( int i = 0; i < orig_solutes.size(); i++ )
{
@@ -823,6 +895,7 @@
job.mpi_job.dataset_offset = current_dataset;
job.mpi_job.dataset_count = datasets_to_process;
job.mpi_job.meniscus_value = meniscus_value;
+ job.mpi_job.bottom_value = bottom_value;
max_experiment_size = min_experiment_size;
QVector< US_Solute > prev_solutes = simulation_values.solutes;
@@ -863,6 +936,7 @@
job.mpi_job.command = MPI_Job::PROCESS;
job.mpi_job.length = job.solutes.size();
job.mpi_job.meniscus_value = meniscus_value;
+ job.mpi_job.bottom_value = bottom_value;
job.mpi_job.solution = mc_iteration;
job.mpi_job.dataset_offset = current_dataset;
job.mpi_job.dataset_count = datasets_to_process;
@@ -1135,9 +1209,12 @@
Sa_Job job;
job.solutes = calculated_solutes[ depth ];
job.mpi_job.depth = next_depth;
- meniscus_value = ( meniscus_values.size() == 1 )
+ meniscus_value = ( meniscus_points == 1 )
? data_sets[ current_dataset ]->run_data.meniscus
: meniscus_values[ meniscus_run ];
+ bottom_value = ( bottom_points == 1 )
+ ? data_sets[ current_dataset ]->run_data.bottom
+ : bottom_values [ bottom_run ];
qSort( job.solutes );
DbgLv(1) << "Mast: queue LAST ns=" << job.solutes.size() << " d=" << depth+1
<< max_depth << " nsvs=" << simulation_values.solutes.size();
Modified: trunk/programs/us_mpi_analysis/2dsa_worker.cpp
===================================================================
--- trunk/programs/us_mpi_analysis/2dsa_worker.cpp 2019-04-24 06:11:54 UTC (rev 2738)
+++ trunk/programs/us_mpi_analysis/2dsa_worker.cpp 2019-04-24 19:57:07 UTC (rev 2739)
@@ -38,13 +38,18 @@
<< "command" << job.command;
meniscus_value = job.meniscus_value;
+ bottom_value = job.bottom_value;
int offset = job.dataset_offset;
int dataset_count = job.dataset_count;
int job_length = job.length;
+ int noisflag = ( parameters[ "tinoise_option" ].toInt() > 0 ? 1 : 0 )
+ + ( parameters[ "rinoise_option" ].toInt() > 0 ? 2 : 0 );
DbgLv(1) << "w:" << my_rank << ": offs cnt" << offset << dataset_count;
data_sets[ offset ]->run_data.meniscus = meniscus_value;
+ data_sets[ offset ]->run_data.bottom = bottom_value;
data_sets[ offset ]->simparams.meniscus = meniscus_value;
+ data_sets[ offset ]->simparams.bottom = bottom_value;
switch( job.command )
{
@@ -52,10 +57,7 @@
case MPI_Job::PROCESS: // Process solutes
{
US_SolveSim::Simulation simulation_values;
- simulation_values.noisflag =
- parameters[ "tinoise_option" ].toInt() > 0 ? 1 : 0;
- simulation_values.noisflag +=
- parameters[ "rinoise_option" ].toInt() > 0 ? 2 : 0;
+ simulation_values.noisflag = noisflag;
simulation_values.dbg_level = dbg_level;
simulation_values.dbg_timing = dbg_timing;
@@ -80,10 +82,11 @@
int nn = simulation_values.solutes.size() - 1;
int mm = nn/2;
DbgLv(1) << "w:" << my_rank << ": offs dscnt" << offset << dataset_count
- << "vbar s20wc bott"
+ << "vbar s20wc cpbott dabott"
<< data_sets[offset]->vbar20
<< data_sets[offset]->s20w_correction
- << data_sets[offset]->centerpiece_bottom;
+ << data_sets[offset]->centerpiece_bottom
+ << data_sets[offset]->run_data.bottom;
DbgLv(1) << "w:" << my_rank << ": sol0 solm soln"
<< simulation_values.solutes[0].s << simulation_values.solutes[0].k
<< simulation_values.solutes[mm].s << simulation_values.solutes[mm].k
Modified: trunk/programs/us_mpi_analysis/us_mpi_analysis.cpp
===================================================================
--- trunk/programs/us_mpi_analysis/us_mpi_analysis.cpp 2019-04-24 06:11:54 UTC (rev 2738)
+++ trunk/programs/us_mpi_analysis/us_mpi_analysis.cpp 2019-04-24 19:57:07 UTC (rev 2739)
@@ -302,11 +302,53 @@
mc_iterations = parameters[ "mc_iterations" ].toInt();
mc_iterations = qMax( mc_iterations, 1 );
+ // Set Fit-Meniscus/Bottom parameters
+ fit_mb_select = parameters[ "fit_mb_select" ].toInt();
meniscus_range = parameters[ "meniscus_range" ].toDouble();
meniscus_points = parameters[ "meniscus_points" ].toInt();
- meniscus_points = qMax( meniscus_points, 1 );
- meniscus_range = ( meniscus_points > 1 ) ? meniscus_range : 0.0;
+ fit_mb_select = ( meniscus_points > 1 ) ? fit_mb_select : 0;
+ fit_meni = ( ( fit_mb_select & 1 ) != 0 );
+ fit_bott = ( ( fit_mb_select & 2 ) != 0 );
+ fit_menbot = ( fit_meni && fit_bott );
+if (my_rank==0) {
+DbgLv(0) << "FMB: fit_mb_select" << fit_mb_select
+ << " fit_meni _bott _menbot" << fit_meni << fit_bott << fit_menbot; }
+ if ( fit_menbot )
+ { // Meniscus-and-bottom fit iterations will be run
+ bottom_range = meniscus_range;
+ bottom_points = meniscus_points;
+ menibott_count = meniscus_points * bottom_points;
+ }
+
+ else if ( fit_meni )
+ { // Meniscus-only fit iterations will be run
+ bottom_range = 0.0;
+ bottom_points = 1;
+ menibott_count = meniscus_points;
+ }
+
+ else if ( fit_bott )
+ { // Bottom-only fit iterations will be run
+ bottom_range = meniscus_range;
+ bottom_points = meniscus_points;
+ meniscus_range = 0.0;
+ meniscus_points = 1;
+ menibott_count = bottom_points;
+ }
+
+ else
+ { // No meniscus/bottom fit
+ meniscus_range = 0.0;
+ meniscus_points = 1;
+ bottom_range = 0.0;
+ bottom_points = 1;
+ menibott_count = 1;
+ }
+if (my_rank==0) {
+DbgLv(0) << "FMB: meni range points" << meniscus_range << meniscus_points
+ << " bott range points" << bottom_range << bottom_points; }
+
// Do some parameter checking
count_datasets = data_sets.size();
is_global_fit = US_Util::bool_flag( parameters[ "global_fit" ] );
@@ -379,17 +421,20 @@
double meniscus_start = data_sets[ 0 ]->run_data.meniscus
- meniscus_range / 2.0;
- double dm = ( meniscus_points > 1 )
- ? meniscus_range / ( meniscus_points - 1 ): 0.0;
+ double dmen = fit_meni ?
+ ( meniscus_range / ( meniscus_points - 1 ) ) :
+ 0.0;
- for ( int i = 0; i < meniscus_points; i++ )
+ for ( int ii = 0; ii < meniscus_points; ii++ )
{
- meniscus_values[ i ] = meniscus_start + dm * i;
+ meniscus_values[ ii ] = meniscus_start + dmen * ii;
}
// Get lower limit of data and last (largest) meniscus value
double start_range = data_sets[ 0 ]->run_data.radius( 0 );
double last_meniscus = meniscus_values[ meniscus_points - 1 ];
+if (my_rank==0) {
+ DbgLv(0) << "FMB: meniscus: start delta" << meniscus_start << dmen; }
if ( last_meniscus >= start_range )
{
@@ -400,13 +445,30 @@
qDebug() << " meniscus_start" << meniscus_start;
qDebug() << " meniscus_range" << meniscus_range;
qDebug() << " meniscus_points" << meniscus_points;
- qDebug() << " dm" << dm;
+ qDebug() << " meniscus delta" << dmen;
qDebug() << " last_meniscus" << last_meniscus;
qDebug() << " left_data" << start_range;
}
abort( "Meniscus value extends into data" );
}
+ // Calculate bottom values
+ bottom_values.resize( bottom_points );
+
+ double bottom_start = data_sets[ 0 ]->run_data.bottom
+ - bottom_range / 2.0;
+
+ double dbot = fit_bott ?
+ ( bottom_range / ( bottom_points - 1 ) ) :
+ 0.0;
+
+ for ( int ii = 0; ii < bottom_points; ii++ )
+ {
+ bottom_values[ ii ] = bottom_start + dbot * ii;
+ }
+if (my_rank==0) {
+ DbgLv(0) << "FMB: bottom: start delta" << bottom_start << dbot; }
+
population = parameters[ "population" ].toInt();
generations = parameters[ "generations" ].toInt();
crossover = parameters[ "crossover" ].toInt();
@@ -691,6 +753,7 @@
DbgLv(0) << "rank" << my_rank << ": ee" << ee << "tmst_file" << ds->tmst_file
<< "ssp count" << ds->simparams.sim_speed_prof.count();
+#if 0
// If EditedData has a bottom, use that to adjust bottom_position
US_DataIO::EditedData* edata = &ds->run_data;
@@ -713,6 +776,7 @@
<< "adj.bottom_pos" << ds->simparams.bottom_position;
}
}
+#endif
} // END: datasets loop to upload timestate
//DbgLv(0) << "rank" << my_rank << ": simSpeed :TM:" << ELAPSED_SECS;
// }
@@ -890,7 +954,9 @@
parameters[ "p_mutate_sk" ] = "20";
count_calc_residuals = 0; // Internal instrumentation
+ menibott_ndx = 0;
meniscus_run = 0;
+ bottom_run = 0;
mc_iteration = 0;
// Determine masters-group count and related controls
@@ -1424,6 +1490,7 @@
US_SolveSim::Simulation sim = simulation_values;
double save_meniscus = meniscus_value;
+ double save_bottom = bottom_value;
US_Model::AnalysisType mdl_type = model_type( analysis_type );
int mxdssz = -1;
@@ -1494,6 +1561,8 @@
DbgLv(1) << "WrO: meniscus_run" << meniscus_run << "mvsz" << meniscus_values.size();
meniscus_value = meniscus_run < meniscus_values.size()
? meniscus_values[ meniscus_run ] : save_meniscus;
+ bottom_value = bottom_run < bottom_values.size()
+ ? bottom_values[ bottom_run ] : save_bottom;
if ( mdl_type == US_Model::PCSA )
{
@@ -1510,6 +1579,7 @@
DbgLv(1) << "WrO: wr_model mdl_type" << mdl_type;
write_model( sim, mdl_type );
meniscus_value = save_meniscus;
+ bottom_value = save_bottom;
DbgLv(1) << "WrO: wr_noise";
if ( parameters[ "tinoise_option" ].toInt() > 0 )
@@ -1924,9 +1994,12 @@
model.analysis = type;
QString runID = edata->runID;
- if ( meniscus_points > 1 )
+ if ( fit_meni )
model.global = US_Model::MENISCUS;
+ else if ( fit_bott )
+ model.global = US_Model::BOTTOM;
+
else if ( is_global_fit )
{
model.global = US_Model::GLOBAL;
@@ -1937,9 +2010,11 @@
else
model.global = US_Model::NONE;
-DbgLv(1) << "wrMo: is_glob glob_sols" << is_global_fit << glob_sols;
+DbgLv(0) << "wrMo: is_glob glob_sols" << is_global_fit << glob_sols
+ << "f_men f_bot" << fit_meni << fit_bott << "m.glob" << model.global;
model.meniscus = meniscus_value;
+ model.bottom = fit_bott ? bottom_value : 0.0;
model.variance = sim.variance;
// demo1_veloc. 1A999. e201101171200_a201101171400_2DSA us3-0000003 .model
@@ -1962,10 +2037,19 @@
if ( mc_iterations > 1 )
iterID.sprintf( "mc%04d", mc_iter );
- else if ( meniscus_points > 1 )
+ else if ( fit_menbot )
+ iterID.sprintf( "i%02d-m%05db%05d",
+ menibott_ndx + 1,
+ (int)( meniscus_value * 10000 ),
+ (int)( bottom_value * 10000 ) );
+ else if ( fit_meni )
iterID.sprintf( "i%02d-m%05d",
meniscus_run + 1,
- (int)(meniscus_value * 10000 ) );
+ (int)( meniscus_value * 10000 ) );
+ else if ( fit_bott )
+ iterID.sprintf( "i%02d-b%05d",
+ bottom_run + 1,
+ (int)( bottom_value * 10000 ) );
else
iterID = "i01";
@@ -1980,7 +2064,7 @@
double vbar20 = data_sets[ current_dataset ]->vbar20;
model.description = runID + "." + tripleID + "." + analyID + ".model";
-DbgLv(1) << "wrMo: model descr" << model.description;
+DbgLv(0) << "wrMo: model descr" << model.description;
// Save as class variable for later reference
modelGUID = model.modelGUID;
@@ -2054,8 +2138,8 @@
int run = 1;
- if ( meniscus_run > 0 )
- run = meniscus_run + 1;
+ if ( menibott_ndx > 0 )
+ run = menibott_ndx + 1;
else if ( mc_iterations > 0 )
run = mc_iter;
@@ -2065,6 +2149,7 @@
<< ";MC_iteration=" << mc_iter
<< ";variance=" << sim.variance
<< ";run=" << runstring
+ << ";bottom_value=" << bottom_value
<< "\n";
fileo.close();
}
@@ -2118,9 +2203,19 @@
if ( mc_iterations > 1 ) // MonteCarlo iteration
iterID.sprintf( "mc%04d", mc_iteration + 1 );
- else if ( meniscus_points > 1 ) // Fit meniscus
- iterID.sprintf( "i%02d-m%05d", meniscus_run + 1,
- (int)(meniscus_values[ meniscus_run ] * 10000 ) );
+ else if ( fit_menbot ) // Meniscus+Bottom fit
+ iterID.sprintf( "i%02d-m%05db%05d",
+ menibott_ndx + 1,
+ (int)( meniscus_value * 10000 ),
+ (int)( bottom_value * 10000 ) );
+ else if ( fit_meni ) // Meniscus fit
+ iterID.sprintf( "i%02d-m%05d",
+ meniscus_run + 1,
+ (int)( meniscus_value * 10000 ) );
+ else if ( fit_bott ) // Bottom fit
+ iterID.sprintf( "i%02d-b%05d",
+ bottom_run + 1,
+ (int)( bottom_value * 10000 ) );
else // Non-iterative single
iterID = "i01";
@@ -2402,10 +2497,19 @@
if ( mc_iterations > 1 )
iterID.sprintf( "mc%04d", mc_iter );
- else if ( meniscus_points > 1 )
+ else if ( fit_menbot )
+ iterID.sprintf( "i%02d-m%05db%05d",
+ menibott_ndx + 1,
+ (int)( meniscus_value * 10000 ),
+ (int)( bottom_value * 10000 ) );
+ else if ( fit_meni )
iterID.sprintf( "i%02d-m%05d",
meniscus_run + 1,
- (int)(meniscus_value * 10000 ) );
+ (int)( meniscus_value * 10000 ) );
+ else if ( fit_bott )
+ iterID.sprintf( "i%02d-b%05d",
+ bottom_run + 1,
+ (int)( bottom_value * 10000 ) );
else
iterID = "i01";
@@ -2489,8 +2593,8 @@
int run = 1;
- if ( meniscus_run > 0 )
- run = meniscus_run + 1;
+ if ( menibott_ndx > 0 )
+ run = menibott_ndx + 1;
else if ( mc_iterations > 0 )
run = mc_iter;
@@ -2500,6 +2604,7 @@
<< ";MC_iteration=" << mc_iter
<< ";variance=" << sim.variance
<< ";run=" << runstring
+ << ";bottom_value=" << bottom_value
<< "\n";
fileo.close();
}
Modified: trunk/programs/us_mpi_analysis/us_mpi_analysis.h
===================================================================
--- trunk/programs/us_mpi_analysis/us_mpi_analysis.h 2019-04-24 06:11:54 UTC (rev 2738)
+++ trunk/programs/us_mpi_analysis/us_mpi_analysis.h 2019-04-24 19:57:07 UTC (rev 2739)
@@ -95,17 +95,8 @@
QList< int > ds_points;
QVector< double > gl_nnls_a;
QVector< double > gl_nnls_b;
- int max_depth;
- int worknext;
- enum WorkerStatus { INIT, READY, WORKING };
- enum PMGTag { ADATESIZE=1000, ADATE, STARTITER, STARTLAST,
- UDPSIZE, UDPMSG, DONEITER, DONELAST };
-
- int meniscus_points;
- int meniscus_run;
- double meniscus_range; // Only used by master
- double meniscus_value; // Only used by worker
QVector< double > meniscus_values;
+ QVector< double > bottom_values;
QVector< double > concentrations;
QVector< double > maxods;
@@ -113,6 +104,30 @@
QVector< double > sigmas;
QVector< long > work_rss;
+ double meniscus_range; // Only used by master
+ double meniscus_value; // Only used by worker
+ double bottom_range; // Only used by master
+ double bottom_value; // Only used by worker
+
+ int max_depth;
+ int worknext;
+ int fit_mb_select; // Fit meniscus/bottom selection (0-3)
+ int menibott_ndx;
+ int meniscus_run;
+ int bottom_run;
+ int menibott_count;
+ int meniscus_points;
+ int bottom_points;
+ int set_count;
+
+ enum WorkerStatus { INIT, READY, WORKING };
+ enum PMGTag { ADATESIZE=1000, ADATE, STARTITER, STARTLAST,
+ UDPSIZE, UDPMSG, DONEITER, DONELAST };
+
+ bool fit_meni; // Fit-meniscus flag
+ bool fit_bott; // Fit-bottom flag
+ bool fit_menbot; // Fit-meniscus+bottom flag
+
US_DataIO::RawData* res_data; // Populated in calc_residuals
US_DataIO::RawData* sim_data; // Populated in calc_residuals
US_DataIO::RawData sim_data1; // Simulation for mc iteration 1
@@ -142,7 +157,6 @@
QDateTime submitTime;
QDateTime startTime;
- int set_count;
QList< DATASET* > data_sets;
class MPI_Job
@@ -159,6 +173,7 @@
Command command;
int depth;
double meniscus_value;
+ double bottom_value;
int dataset_offset;
int dataset_count;
@@ -169,6 +184,7 @@
command = IDLE;
depth = 0;
meniscus_value = 0.0;
+ bottom_value = 0.0;
dataset_offset = 0;
dataset_count = 1;
};
@@ -294,7 +310,7 @@
public:
int generation; // From worker: -1 = final; From master: 1 = done
int size; // Number of solutes in the following vector or
- // or genes requested for emmigration
+ // or genes requested for emigration
double fitness; // Fitness of best result
};
Modified: trunk/utils/us_astfem_rsa.cpp
===================================================================
--- trunk/utils/us_astfem_rsa.cpp 2019-04-24 06:11:54 UTC (rev 2738)
+++ trunk/utils/us_astfem_rsa.cpp 2019-04-24 19:57:07 UTC (rev 2739)
@@ -957,7 +957,9 @@
// Time left to be simulated after accelaration zone
duration = time2 - current_time;
+#if 0
adjust_limits( sp->rotorspeed ); // Does rotor stretch
+#endif
//duration = time2 - time0;
//delay = time1 - time0;
More information about the us-commits
mailing list