Changeset 2816


Ignore:
Timestamp:
Aug 15, 2019 4:42:34 PM (3 months ago)
Author:
gegorbet
Message:

density_match: diffcoeff averaging options, ff0 calcs, tab order changes in ModelParms? dialog

Location:
trunk/programs/us_density_match
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/programs/us_density_match/us_density_match.cpp

    r2815 r2816  
    6868   QLabel* lb_info1      = us_banner( tr( "Model Selection Controls" ) );
    6969
    70    us_checkbox( tr( "Save Plot(s)"    ), ck_savepl,  false );
    71    us_checkbox( tr( "Local Save Only" ), ck_locsave, true  );
     70//   us_checkbox( tr( "Save Plot(s)"    ), ck_savepl,  false );
     71//   us_checkbox( tr( "Local Save Only" ), ck_locsave, true  );
    7272
    7373   // Distribution information text box
     
    103103            this,       SLOT  ( select_x_axis ( int ) ) );
    104104
     105   // Diffusion-averaging radio buttons and button group
     106   diff_avg    = 1;
     107   QLabel* lb_di_avg   = us_label( tr( "Diffusion Coefficient Averaging:" ) );
     108           bg_di_avg   = new QButtonGroup( this );
     109   QGridLayout*  gl_da_n   = us_radiobutton( tr( "none"     ), rb_da_n, false );
     110   QGridLayout*  gl_da_s   = us_radiobutton( tr( "simple"   ), rb_da_s, true  );
     111   QGridLayout*  gl_da_w   = us_radiobutton( tr( "weighted" ), rb_da_w, false );
     112   bg_di_avg->addButton( rb_da_n, 0 );
     113   bg_di_avg->addButton( rb_da_s, 1 );
     114   bg_di_avg->addButton( rb_da_w, 2 );
     115   rb_da_n  ->setToolTip( tr( "Perform NO Diffusion Coefficient Averaging" ) );
     116   rb_da_s  ->setToolTip( tr( "Do a SIMPLE average of Diffusion Coefficients across distributions" ) );
     117   rb_da_w  ->setToolTip( tr( "Do a WEIGHTED average of Diffusion Coefficients across distributions" ) );
     118   rb_da_s  ->setChecked( true );
     119   connect( bg_di_avg,  SIGNAL( buttonReleased( int ) ),
     120            this,       SLOT  ( select_di_avg ( int ) ) );
     121
     122   // Various other GUI elements
    105123   pb_refresh    = us_pushbutton( tr( "Refresh Plot" ) );
    106124   pb_refresh->setEnabled(  false );
     
    173191   spec->addLayout( gl_x_ff0,      s_row,   4, 1, 2 );
    174192   spec->addLayout( gl_x_rh,       s_row++, 6, 1, 2 );
    175    spec->addWidget( ck_savepl,     s_row,   0, 1, 4 );
    176    spec->addWidget( ck_locsave,    s_row++, 4, 1, 4 );
     193//   spec->addWidget( ck_savepl,     s_row,   0, 1, 4 );
     194//   spec->addWidget( ck_locsave,    s_row++, 4, 1, 4 );
     195   spec->addWidget( lb_di_avg,     s_row++, 0, 1, 8 );
     196   spec->addLayout( gl_da_n,       s_row,   2, 1, 2 );
     197   spec->addLayout( gl_da_s,       s_row,   4, 1, 2 );
     198   spec->addLayout( gl_da_w,       s_row++, 6, 1, 2 );
    177199   spec->addWidget( te_distr_info, s_row,   0, 2, 8 ); s_row += 2;
    178200
     
    697719
    698720   curr_distr = alldis.size() - 1;
    699    need_save  = ck_savepl->isChecked()  &&  !cont_loop;
     721//   need_save  = ck_savepl->isChecked()  &&  !cont_loop;
    700722   pb_rmvdist->setEnabled( models.count() > 0 );
    701723
     
    704726                      "you must set D2O Percent values for each,\n"
    705727                      "then review and set Label and Density values for them.\n"
    706                       "Begin with the model with 0% D2O." )
     728                      "Insure there is a model with 0% D2O." )
    707729                      .arg( alldis.size() );
    708730   QMessageBox::warning( this, tr( "Model Parameters" ), qmsg );
     
    10941116{
    10951117   QString pfmsg;
     1118   QString dinfo;
    10961119   int nruns  = 0;
    10971120   pfilts.clear();
     
    11081131
    11091132   if ( nruns == 0 )
    1110       pfmsg = tr( "(no prefilter)" );
     1133   {
     1134      pfmsg  = tr( "(no prefilter)" );
     1135      dinfo  = pfmsg + "\n";
     1136   }
    11111137
    11121138   else if ( nruns > 1 )
    1113       pfmsg = tr( "RunID prefilter - %1 runs: " ).arg( nruns )
    1114               + QString( pfilts[ 0 ] ).left( 20 ) + "*, ...";
     1139   {
     1140      pfmsg  = tr( "RunID prefilter - %1 runs: " ).arg( nruns )
     1141               + QString( pfilts[ 0 ] ).left( 20 ) + "*, ...";
     1142      dinfo  = tr( "RunID prefilter - %1 runs:\n" ).arg( nruns );
     1143      for ( int ii = 0; ii < nruns; ii++ )
     1144      {
     1145         dinfo += pfilts[ ii ] + "\n";
     1146      }
     1147   }
    11151148
    11161149   else
    1117       pfmsg = tr( "RunID prefilter - 1 run: " )
    1118               + QString( pfilts[ 0 ] ).left( 20 ) + " ...";
    1119 
    1120    le_prefilt->setText( pfmsg );
     1150   {
     1151      pfmsg  = tr( "RunID prefilter - 1 run: " )
     1152               + QString( pfilts[ 0 ] ).left( 20 ) + " ...";
     1153      dinfo  = tr( "RunID prefilter - 1 run:\n" ) + pfilts[ 0 ];
     1154   }
     1155
     1156   le_prefilt   ->setText( pfmsg );
     1157   te_distr_info->setText( dinfo );
    11211158}
    11221159
     
    12341271//   set_limits();
    12351272
     1273   plot_data();         // Plot data
     1274}
     1275
     1276// Select diffusion coefficient averaging flag
     1277void US_Density_Match::select_di_avg( int ival )
     1278{
     1279DbgLv(1) << "sel_da:  ival" << ival;
     1280   diff_avg   = ival;
     1281   build_bf_dists();    // Build the boundary fraction distributions
     1282   build_bf_vects();    // Build the boundary fraction vectors
    12361283   plot_data();         // Plot data
    12371284}
     
    13091356void US_Density_Match::build_bf_dists()
    13101357{
    1311    bool diff_avg    = true;
    13121358   int ndists       = alldis.size();
    13131359   for ( int jj = 0; jj < ndists; jj++ )
     
    13161362   }
    13171363
    1318    if ( diff_avg )
    1319    {  // Replace diffusion coefficients with weight averages
     1364   if ( diff_avg > 0 )
     1365   {  // Replace diffusion coefficients with simple or weighted averages
    13201366      int npoints      = alldis[ 0 ].bf_distro.size();
    13211367      for ( int jj = 0; jj < npoints; jj++ )
     
    13261372         {  // Accumulate (weighted) sum and sum of weights
    13271373//            double dwt       = alldis[ ii ].bf_distro[ jj ].c;
    1328             double dwt       = 1.0;
     1374            double dwt       = ( diff_avg == 1 ) ? 1.0
     1375                                                 : alldis[ ii ].bf_distro[ jj ].c;
    13291376            dsum            += ( alldis[ ii ].bf_distro[ jj ].d * dwt );
    13301377            wsum            += dwt;
     
    14561503   for ( int jj = 0; jj < npoints; jj++ )
    14571504   {
     1505      // fi = RT/(N*Di)
     1506      // *** ri = fi/(6 * pi * eta)   <-- hydrodynamic radius
     1507      double difco     = v_difcs[ zx ][ jj ] * 1.0e-7;
     1508      double frico     = R_GC * K20 / ( difco * AVOGADRO );
     1509      double hyrad     = frico / ( 6.0 * M_PI * VISC_20W );
     1510      v_hrads << hyrad;
     1511   }
     1512DbgLv(1) << "BldVc: hr 0 1 k n" << v_hrads[0] << v_hrads[1]
     1513 << v_hrads[npoints-2] << v_hrads[npoints-1];
     1514
     1515   // Compute frictional ratio values and build the vector
     1516   const double a_third = ( 1.0 / 3.0 );
     1517   double vol_fac       = ( 0.75 / M_PI );
     1518   double spfac         = 0.06 * M_PI * VISC_20W;
     1519   v_frats.clear();
     1520   v_frats.reserve( npoints );
     1521   for ( int jj = 0; jj < npoints; jj++ )
     1522   {
    14581523      // Mi*vbari/N = Volume of moleculei
    14591524      // V=4/3 * pi*r_0^3    (3/(4*pi) *v)^1/3 = r_0
     
    14631528      // *** ri = fi/(6 * pi * eta)   <-- hydrodynamic radius
    14641529//      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
     1530      double vbari     = v_vbars[ jj ];
     1531      double mmass     = v_mmass[ jj ];
     1532#if 0
    14651533      double difco     = v_difcs[ zx ][ jj ] * 1.0e-7;
    1466       double frico     = R_GC * K20 / ( difco * AVOGADRO );
    1467       double hyrad     = frico / ( 6.0 * M_PI * VISC_20W );
    1468       v_hrads << hyrad;
    1469    }
    1470 DbgLv(1) << "BldVc: hr 0 1 k n" << v_hrads[0] << v_hrads[1]
    1471  << v_hrads[npoints-2] << v_hrads[npoints-1];
    1472 
    1473    // Compute frictional ratio values and build the vector
    1474    const double a_third = ( 1.0 / 3.0 );
    1475    double vol_fac       = ( 0.75 / M_PI );
    1476    v_frats.clear();
    1477    v_frats.reserve( npoints );
    1478    for ( int jj = 0; jj < npoints; jj++ )
    1479    {
    1480       // Mi*vbari/N = Volume of moleculei
    1481       // V=4/3 * pi*r_0^3    (3/(4*pi) *v)^1/3 = r_0
    1482       // f_0i = 6 * pi * eta * r_0i
    1483       // fi = RT/(N*Di)
    1484       // *** fi/f_0i
    1485       // *** ri = fi/(6 * pi * eta)   <-- hydrodynamic radius
    1486 //      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
    1487       double difco     = v_difcs[ zx ][ jj ] * 1.0e-7;
    1488       double vbari     = v_vbars[ jj ];
    14891534//      double rzero     = pow( ( ( 0.75 / M_PI ) * vbari ), a_third );
    1490       double volum     = v_mmass[ jj ] * vbari / AVOGADRO;
     1535      double volum     = mmass * vbari / AVOGADRO;
    14911536      double rzero     = pow( ( vol_fac * volum ), a_third );
    14921537      double fcoef     = R_GC * K20 / ( difco * AVOGADRO );
    1493       double fzero     = 6.0 * M_PI * VISC_20W * rzero;
    1494       double frati     = fcoef / fzero;
     1538//      double fzero     = 6.0 * M_PI * VISC_20W * rzero;
     1539      double fzero     = 0.06 * M_PI * VISC_20W * rzero;
     1540#endif
     1541#if 1
     1542      double sedco     = v_sedcs[ zx ][ jj ] * 1.0e-13;
     1543      double volum     = mmass * vbari / AVOGADRO;
     1544      double rzero     = pow( ( vol_fac * volum ), a_third );
     1545//   rsph_fac       = 0.06 * M_PI * VISC_20W;
     1546//   buoyancyb      = 1.0 - vbar * DENS_20W;
     1547      double fcoef     = mmass * ( 1.0 - vbari * DENS_20W ) / ( sedco * AVOGADRO );
     1548      double fzero     = spfac * rzero;
     1549#endif
     1550      double frati     = qAbs( fcoef / fzero );
    14951551      v_frats << frati;
    14961552   }
  • trunk/programs/us_density_match/us_density_match.h

    r2814 r2816  
    108108      QRadioButton* rb_x_s;
    109109      QRadioButton* rb_x_d;
     110      QRadioButton* rb_da_n;
     111      QRadioButton* rb_da_s;
     112      QRadioButton* rb_da_w;
    110113
    111114      QButtonGroup* bg_x_axis;
     115      QButtonGroup* bg_di_avg;
    112116
    113117      QVector< DisSys >             alldis;    // All distributions
     
    136140      int           dbg_level;
    137141      int           plot_x;
     142      int           diff_avg;
    138143
    139144      bool          auto_sxy;
     
    177182      void set_mparms     ( void );
    178183      void select_x_axis  ( int  );
     184      void select_di_avg  ( int  );
    179185      void build_bf_distro( int  );
    180186      void build_bf_dists ( void );
  • trunk/programs/us_density_match/us_model_params.cpp

    r2813 r2816  
    7272   mainLayout->addWidget( lb_hdr4, row,   3, 1, 2 );
    7373   mainLayout->addWidget( lb_hdr5, row++, 5, 1, 3 );
     74   QList< QLineEdit* > lneds;
    7475   for ( int jj = 0; jj < nd_orig; jj++ )
    7576   {
     
    9192      QLineEdit* le_mdsc = us_lineedit( mdesc  );
    9293      us_setReadOnly( le_mdsc, true );
     94      lneds << le_d2op;
     95      lneds << le_dens;
     96      lneds << le_mlab;
     97      lneds << le_mdsc;
    9398
    9499      QString rowx       = QString::number( jj );
     
    111116   }
    112117DbgLv(1) << "MP:main: model rows populated";
     118
     119   // Reset tab order of line edits in model table
     120   //  Tab down rows of each column, instead of
     121   //  across columns of each row.
     122   for ( int ii = 0; ii < 4; ii++ )
     123   {  // Adjust each column
     124      int kk       = ii;
     125      int ll       = kk;
     126      for ( int jj = 1; jj < nd_orig; jj++ )
     127      {  // Each box connected to next row's box
     128         kk           = ll;      // This box index
     129         ll           = kk + 4;  // Next row index
     130DbgLv(1) << "MP:main: sTO: kk ll" << kk << ll << "  jj" << jj;
     131         QWidget::setTabOrder( lneds[ kk ], lneds[ ll ] );
     132      }
     133      if ( ii < 3 )
     134      {  // Last row box connected to start of next column
     135DbgLv(1) << "MP:main: sTO: ll i1" << ll << ii+1;
     136        QWidget::setTabOrder( lneds[ ll ], lneds[ ii + 1 ] );
     137      }
     138   }
     139     
    113140
    114141   mainLayout ->addWidget( pb_help,    row,   0, 1, 1 );
Note: See TracChangeset for help on using the changeset viewer.