[us-commits] r2816 - trunk/programs/us_density_match
svn at svn.aucsolutions.com
svn at svn.aucsolutions.com
Thu Aug 15 10:42:35 MDT 2019
Author: gegorbet
Date: 2019-08-15 16:42:34 +0000 (Thu, 15 Aug 2019)
New Revision: 2816
Modified:
trunk/programs/us_density_match/us_density_match.cpp
trunk/programs/us_density_match/us_density_match.h
trunk/programs/us_density_match/us_model_params.cpp
Log:
density_match: diffcoeff averaging options, ff0 calcs, tab order changes in ModelParms dialog
Modified: trunk/programs/us_density_match/us_density_match.cpp
===================================================================
--- trunk/programs/us_density_match/us_density_match.cpp 2019-08-15 02:51:53 UTC (rev 2815)
+++ trunk/programs/us_density_match/us_density_match.cpp 2019-08-15 16:42:34 UTC (rev 2816)
@@ -67,8 +67,8 @@
// Top banner
QLabel* lb_info1 = us_banner( tr( "Model Selection Controls" ) );
- us_checkbox( tr( "Save Plot(s)" ), ck_savepl, false );
- us_checkbox( tr( "Local Save Only" ), ck_locsave, true );
+// us_checkbox( tr( "Save Plot(s)" ), ck_savepl, false );
+// us_checkbox( tr( "Local Save Only" ), ck_locsave, true );
// Distribution information text box
te_distr_info = us_textedit();
@@ -102,6 +102,24 @@
connect( bg_x_axis, SIGNAL( buttonReleased( int ) ),
this, SLOT ( select_x_axis ( int ) ) );
+ // Diffusion-averaging radio buttons and button group
+ diff_avg = 1;
+ QLabel* lb_di_avg = us_label( tr( "Diffusion Coefficient Averaging:" ) );
+ bg_di_avg = new QButtonGroup( this );
+ QGridLayout* gl_da_n = us_radiobutton( tr( "none" ), rb_da_n, false );
+ QGridLayout* gl_da_s = us_radiobutton( tr( "simple" ), rb_da_s, true );
+ QGridLayout* gl_da_w = us_radiobutton( tr( "weighted" ), rb_da_w, false );
+ bg_di_avg->addButton( rb_da_n, 0 );
+ bg_di_avg->addButton( rb_da_s, 1 );
+ bg_di_avg->addButton( rb_da_w, 2 );
+ rb_da_n ->setToolTip( tr( "Perform NO Diffusion Coefficient Averaging" ) );
+ rb_da_s ->setToolTip( tr( "Do a SIMPLE average of Diffusion Coefficients across distributions" ) );
+ rb_da_w ->setToolTip( tr( "Do a WEIGHTED average of Diffusion Coefficients across distributions" ) );
+ rb_da_s ->setChecked( true );
+ connect( bg_di_avg, SIGNAL( buttonReleased( int ) ),
+ this, SLOT ( select_di_avg ( int ) ) );
+
+ // Various other GUI elements
pb_refresh = us_pushbutton( tr( "Refresh Plot" ) );
pb_refresh->setEnabled( false );
connect( pb_refresh, SIGNAL( clicked() ),
@@ -172,8 +190,12 @@
spec->addLayout( gl_x_mass, s_row, 2, 1, 2 );
spec->addLayout( gl_x_ff0, s_row, 4, 1, 2 );
spec->addLayout( gl_x_rh, s_row++, 6, 1, 2 );
- spec->addWidget( ck_savepl, s_row, 0, 1, 4 );
- spec->addWidget( ck_locsave, s_row++, 4, 1, 4 );
+// spec->addWidget( ck_savepl, s_row, 0, 1, 4 );
+// spec->addWidget( ck_locsave, s_row++, 4, 1, 4 );
+ spec->addWidget( lb_di_avg, s_row++, 0, 1, 8 );
+ spec->addLayout( gl_da_n, s_row, 2, 1, 2 );
+ spec->addLayout( gl_da_s, s_row, 4, 1, 2 );
+ spec->addLayout( gl_da_w, s_row++, 6, 1, 2 );
spec->addWidget( te_distr_info, s_row, 0, 2, 8 ); s_row += 2;
// Set up analysis controls
@@ -696,14 +718,14 @@
}
curr_distr = alldis.size() - 1;
- need_save = ck_savepl->isChecked() && !cont_loop;
+// need_save = ck_savepl->isChecked() && !cont_loop;
pb_rmvdist->setEnabled( models.count() > 0 );
// Notify user of need to set D2O-percent, label, density model values
QString qmsg = tr( "%1 models are loaded.\n\nIn the dialog to follow,\n"
"you must set D2O Percent values for each,\n"
"then review and set Label and Density values for them.\n"
- "Begin with the model with 0% D2O." )
+ "Insure there is a model with 0% D2O." )
.arg( alldis.size() );
QMessageBox::warning( this, tr( "Model Parameters" ), qmsg );
@@ -1093,6 +1115,7 @@
void US_Density_Match::select_prefilt( void )
{
QString pfmsg;
+ QString dinfo;
int nruns = 0;
pfilts.clear();
@@ -1107,17 +1130,31 @@
pfilts.clear();
if ( nruns == 0 )
- pfmsg = tr( "(no prefilter)" );
+ {
+ pfmsg = tr( "(no prefilter)" );
+ dinfo = pfmsg + "\n";
+ }
else if ( nruns > 1 )
- pfmsg = tr( "RunID prefilter - %1 runs: " ).arg( nruns )
- + QString( pfilts[ 0 ] ).left( 20 ) + "*, ...";
+ {
+ pfmsg = tr( "RunID prefilter - %1 runs: " ).arg( nruns )
+ + QString( pfilts[ 0 ] ).left( 20 ) + "*, ...";
+ dinfo = tr( "RunID prefilter - %1 runs:\n" ).arg( nruns );
+ for ( int ii = 0; ii < nruns; ii++ )
+ {
+ dinfo += pfilts[ ii ] + "\n";
+ }
+ }
else
- pfmsg = tr( "RunID prefilter - 1 run: " )
- + QString( pfilts[ 0 ] ).left( 20 ) + " ...";
+ {
+ pfmsg = tr( "RunID prefilter - 1 run: " )
+ + QString( pfilts[ 0 ] ).left( 20 ) + " ...";
+ dinfo = tr( "RunID prefilter - 1 run:\n" ) + pfilts[ 0 ];
+ }
- le_prefilt->setText( pfmsg );
+ le_prefilt ->setText( pfmsg );
+ te_distr_info->setText( dinfo );
}
@@ -1236,6 +1273,16 @@
plot_data(); // Plot data
}
+// Select diffusion coefficient averaging flag
+void US_Density_Match::select_di_avg( int ival )
+{
+DbgLv(1) << "sel_da: ival" << ival;
+ diff_avg = ival;
+ build_bf_dists(); // Build the boundary fraction distributions
+ build_bf_vects(); // Build the boundary fraction vectors
+ plot_data(); // Plot data
+}
+
// Generate the BF version of the current distribution
void US_Density_Match::build_bf_distro( int modx )
{
@@ -1308,15 +1355,14 @@
// Generate the BoundaryFraction version of all distributions
void US_Density_Match::build_bf_dists()
{
- bool diff_avg = true;
int ndists = alldis.size();
for ( int jj = 0; jj < ndists; jj++ )
{ // Build bfrac distro for each model
build_bf_distro( jj );
}
- if ( diff_avg )
- { // Replace diffusion coefficients with weight averages
+ if ( diff_avg > 0 )
+ { // Replace diffusion coefficients with simple or weighted averages
int npoints = alldis[ 0 ].bf_distro.size();
for ( int jj = 0; jj < npoints; jj++ )
{
@@ -1325,7 +1371,8 @@
for ( int ii = 0; ii < ndists; ii++ )
{ // Accumulate (weighted) sum and sum of weights
// double dwt = alldis[ ii ].bf_distro[ jj ].c;
- double dwt = 1.0;
+ double dwt = ( diff_avg == 1 ) ? 1.0
+ : alldis[ ii ].bf_distro[ jj ].c;
dsum += ( alldis[ ii ].bf_distro[ jj ].d * dwt );
wsum += dwt;
}
@@ -1455,13 +1502,8 @@
v_hrads.reserve( npoints );
for ( int jj = 0; jj < npoints; jj++ )
{
- // Mi*vbari/N = Volume of moleculei
- // V=4/3 * pi*r_0^3 (3/(4*pi) *v)^1/3 = r_0
- // f_0i = 6 * pi * eta * r_0i
// fi = RT/(N*Di)
- // *** fi/f_0i
// *** ri = fi/(6 * pi * eta) <-- hydrodynamic radius
-// double difco = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
double difco = v_difcs[ zx ][ jj ] * 1.0e-7;
double frico = R_GC * K20 / ( difco * AVOGADRO );
double hyrad = frico / ( 6.0 * M_PI * VISC_20W );
@@ -1473,6 +1515,7 @@
// Compute frictional ratio values and build the vector
const double a_third = ( 1.0 / 3.0 );
double vol_fac = ( 0.75 / M_PI );
+ double spfac = 0.06 * M_PI * VISC_20W;
v_frats.clear();
v_frats.reserve( npoints );
for ( int jj = 0; jj < npoints; jj++ )
@@ -1484,14 +1527,27 @@
// *** fi/f_0i
// *** ri = fi/(6 * pi * eta) <-- hydrodynamic radius
// double difco = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
+ double vbari = v_vbars[ jj ];
+ double mmass = v_mmass[ jj ];
+#if 0
double difco = v_difcs[ zx ][ jj ] * 1.0e-7;
- double vbari = v_vbars[ jj ];
// double rzero = pow( ( ( 0.75 / M_PI ) * vbari ), a_third );
- double volum = v_mmass[ jj ] * vbari / AVOGADRO;
+ double volum = mmass * vbari / AVOGADRO;
double rzero = pow( ( vol_fac * volum ), a_third );
double fcoef = R_GC * K20 / ( difco * AVOGADRO );
- double fzero = 6.0 * M_PI * VISC_20W * rzero;
- double frati = fcoef / fzero;
+// double fzero = 6.0 * M_PI * VISC_20W * rzero;
+ double fzero = 0.06 * M_PI * VISC_20W * rzero;
+#endif
+#if 1
+ double sedco = v_sedcs[ zx ][ jj ] * 1.0e-13;
+ double volum = mmass * vbari / AVOGADRO;
+ double rzero = pow( ( vol_fac * volum ), a_third );
+// rsph_fac = 0.06 * M_PI * VISC_20W;
+// buoyancyb = 1.0 - vbar * DENS_20W;
+ double fcoef = mmass * ( 1.0 - vbari * DENS_20W ) / ( sedco * AVOGADRO );
+ double fzero = spfac * rzero;
+#endif
+ double frati = qAbs( fcoef / fzero );
v_frats << frati;
}
DbgLv(1) << "BldVc: fr 0 1 k n" << v_frats[0] << v_frats[1]
Modified: trunk/programs/us_density_match/us_density_match.h
===================================================================
--- trunk/programs/us_density_match/us_density_match.h 2019-08-15 02:51:53 UTC (rev 2815)
+++ trunk/programs/us_density_match/us_density_match.h 2019-08-15 16:42:34 UTC (rev 2816)
@@ -107,8 +107,12 @@
QRadioButton* rb_x_vbar;
QRadioButton* rb_x_s;
QRadioButton* rb_x_d;
+ QRadioButton* rb_da_n;
+ QRadioButton* rb_da_s;
+ QRadioButton* rb_da_w;
QButtonGroup* bg_x_axis;
+ QButtonGroup* bg_di_avg;
QVector< DisSys > alldis; // All distributions
@@ -135,6 +139,7 @@
int curr_distr;
int dbg_level;
int plot_x;
+ int diff_avg;
bool auto_sxy;
bool auto_scz;
@@ -176,6 +181,7 @@
void remove_distro ( void );
void set_mparms ( void );
void select_x_axis ( int );
+ void select_di_avg ( int );
void build_bf_distro( int );
void build_bf_dists ( void );
void build_bf_vects ( void );
Modified: trunk/programs/us_density_match/us_model_params.cpp
===================================================================
--- trunk/programs/us_density_match/us_model_params.cpp 2019-08-15 02:51:53 UTC (rev 2815)
+++ trunk/programs/us_density_match/us_model_params.cpp 2019-08-15 16:42:34 UTC (rev 2816)
@@ -71,6 +71,7 @@
mainLayout->addWidget( lb_hdr3, row, 2, 1, 1 );
mainLayout->addWidget( lb_hdr4, row, 3, 1, 2 );
mainLayout->addWidget( lb_hdr5, row++, 5, 1, 3 );
+ QList< QLineEdit* > lneds;
for ( int jj = 0; jj < nd_orig; jj++ )
{
QString modelid = modelids[ jj ];
@@ -90,6 +91,10 @@
QLineEdit* le_mlab = us_lineedit( mlabel );
QLineEdit* le_mdsc = us_lineedit( mdesc );
us_setReadOnly( le_mdsc, true );
+ lneds << le_d2op;
+ lneds << le_dens;
+ lneds << le_mlab;
+ lneds << le_mdsc;
QString rowx = QString::number( jj );
le_d2op->setObjectName( "D2OP:" + rowx );
@@ -111,6 +116,28 @@
}
DbgLv(1) << "MP:main: model rows populated";
+ // Reset tab order of line edits in model table
+ // Tab down rows of each column, instead of
+ // across columns of each row.
+ for ( int ii = 0; ii < 4; ii++ )
+ { // Adjust each column
+ int kk = ii;
+ int ll = kk;
+ for ( int jj = 1; jj < nd_orig; jj++ )
+ { // Each box connected to next row's box
+ kk = ll; // This box index
+ ll = kk + 4; // Next row index
+DbgLv(1) << "MP:main: sTO: kk ll" << kk << ll << " jj" << jj;
+ QWidget::setTabOrder( lneds[ kk ], lneds[ ll ] );
+ }
+ if ( ii < 3 )
+ { // Last row box connected to start of next column
+DbgLv(1) << "MP:main: sTO: ll i1" << ll << ii+1;
+ QWidget::setTabOrder( lneds[ ll ], lneds[ ii + 1 ] );
+ }
+ }
+
+
mainLayout ->addWidget( pb_help, row, 0, 1, 1 );
mainLayout ->addWidget( pb_cancel, row, 1, 1, 2 );
mainLayout ->addWidget( pb_accept, row, 3, 1, 2 );
More information about the us-commits
mailing list