[us-commits] r2808 - trunk/programs/us_density_match

svn at svn.aucsolutions.com svn at svn.aucsolutions.com
Tue Aug 13 14:11:34 MDT 2019


Author: gegorbet
Date: 2019-08-13 20:11:33 +0000 (Tue, 13 Aug 2019)
New Revision: 2808

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 initial computation code complete and all plots working

Modified: trunk/programs/us_density_match/us_density_match.cpp
===================================================================
--- trunk/programs/us_density_match/us_density_match.cpp	2019-08-12 22:40:23 UTC (rev 2807)
+++ trunk/programs/us_density_match/us_density_match.cpp	2019-08-13 20:11:33 UTC (rev 2808)
@@ -47,12 +47,12 @@
 // US_Density_Match class constructor
 US_Density_Match::US_Density_Match() : US_Widgets()
 {
+   dbg_level = US_Settings::us_debug();
+
    // Set up the GUI
-
    setWindowTitle( tr( "Density Matching" ) );
    setPalette( US_GuiSettings::frameColor() );
 
-
    // Primary layouts
    QHBoxLayout* main = new QHBoxLayout( this );
    QVBoxLayout* left = new QVBoxLayout();
@@ -64,25 +64,20 @@
    spec->setSpacing        ( 1 );
    spec->setContentsMargins( 0, 0, 0, 0 );
 
-   int s_row = 0;
-   dbg_level = US_Settings::us_debug();
-DbgLv(1) << "MD: main: AA";
-//   clean_etc_dir();
-
    // 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  );
 
+   // Distribution information text box
    te_distr_info = us_textedit();
-   te_distr_info->setText    ( tr( "Run:  runID.triple (method)\n" )
+   te_distr_info->setText( tr( "Run:  runID.triple (method)\n" )
             + tr( "    analysisID" ) );
    us_setReadOnly( te_distr_info, true );
 
+   // X axis radio buttons and button group
    plot_x      = 0;
-
    QLabel* lb_x_axis   = us_label( tr( "Plot X:" ) );
            bg_x_axis   = new QButtonGroup( this );
    QGridLayout*  gl_x_mass = us_radiobutton( tr( "m.mass"   ), rb_x_mass, true  );
@@ -97,13 +92,13 @@
    bg_x_axis->addButton( rb_x_vbar, ATTR_V );
    bg_x_axis->addButton( rb_x_s,    ATTR_S );
    bg_x_axis->addButton( rb_x_d,    ATTR_D );
-   rb_x_mass->setChecked( true  );
    rb_x_mass->setToolTip( tr( "Set X axis to Molar Mass"                ) );
    rb_x_ff0 ->setToolTip( tr( "Set X axis to Frictional Ratio"          ) );
    rb_x_rh  ->setToolTip( tr( "Set X axis to Hydrodynamic Radius"       ) );
    rb_x_vbar->setToolTip( tr( "Set X axis to Partial Specific Volume"   ) );
    rb_x_s   ->setToolTip( tr( "Set X axis to Sedimentation Coefficient" ) );
    rb_x_d   ->setToolTip( tr( "Set X axis to Diffusion Coefficient"     ) );
+   rb_x_s   ->setChecked( true );
    connect( bg_x_axis,  SIGNAL( buttonReleased( int ) ),
             this,       SLOT  ( select_x_axis ( int ) ) );
 
@@ -159,6 +154,7 @@
             this,       SLOT( close() ) );
 
    // Order plot components on the left side
+   int s_row = 0;
    spec->addWidget( lb_info1,      s_row++, 0, 1, 8 );
    spec->addLayout( dkdb_cntrls,   s_row++, 0, 1, 8 );
    spec->addWidget( le_prefilt,    s_row++, 0, 1, 8 );
@@ -257,6 +253,7 @@
    reset();
 }
 
+// Reset information: clear prefilter and distributions
 void US_Density_Match::reset( void )
 {
 DbgLv(1) << "MD:   reset: AA";
@@ -274,6 +271,7 @@
    le_prefilt->setText( tr( "(no prefilter)" ) );
 }
 
+// Save plots and CSV files
 void US_Density_Match::save( void )
 {
 #if 0
@@ -334,7 +332,7 @@
 #endif
 }
 
-// plot the data
+// Plot the data
 void US_Density_Match::plot_data( void )
 {
    int syssiz = alldis.size();
@@ -345,7 +343,6 @@
    DisSys* tsys   = (DisSys*)&alldis.at( 0 );
    plot_x         = ( plot_x < 0 ) ? plot_x_select() : plot_x;
 
-
 #if 0
 auto_sxy=true;
    if ( auto_sxy )
@@ -377,6 +374,7 @@
    double* yy     = v_bfracs.data();
    double* xx     = v_sedcs[ 0 ].data();
    QString curvtitl( "curve" );
+   // Plot title
    QString tstr   = QString( tsys->run_name ).section( ".", 0, -2 );
 DbgLv(1) << "DaPl: (1)tstr" << tstr;
 DbgLv(1) << "DaPl:    tstr len" << tstr.length();
@@ -389,6 +387,7 @@
       tstr          += "\n";
 DbgLv(1) << "DaPl: (2)tstr" << tstr;
 
+   // X pointer, curve title, rest of plot title; based on plot type
    if      ( plot_x == ATTR_S )
    {
       xx             = v_sedcs[ 0 ].data();
@@ -407,7 +406,7 @@
       xx             = v_vbars.data();
 DbgLv(1) << "DaPl: v_vbars" << v_vbars;
       curvtitl       = tr( "Vbar_curve" );
-      tstr          += tr( "Specific Density" );
+      tstr          += tr( "Partial Specific Density" );
    }
    else if ( plot_x == ATTR_D )
    {
@@ -430,6 +429,7 @@
    }
 DbgLv(1) << "DaPl: (3)tstr" << tstr;
 
+   // Initial plot settings
    dataPlotClear( data_plot );
    data_plot->replot();
    data_plot->setTitle( tstr );
@@ -451,8 +451,12 @@
    if ( ncurvs == 1 )
    {
       // Plot a single line
+      data_plot->detachItems( QwtPlotItem::Rtti_PlotLegend, true );
+      QwtLegend *legend = new QwtLegend;
+      data_plot->insertLegend( legend, QwtPlot::BottomLegend  );
       QColor colr1( Qt::blue );
       data_curv      = us_curve( data_plot, curvtitl );
+      data_curv->setItemAttribute( QwtPlotItem::Legend, true );
       data_curv->setPen  ( QPen( QBrush( colr1 ), 3.0, Qt::SolidLine ) );
       data_curv->setStyle( QwtPlotCurve::Lines );
 
@@ -495,6 +499,7 @@
    data_plot->replot();
 }
 
+// Plot data based on current plot type index
 void US_Density_Match::plot_data( int cplx )
 {
    plot_x         = cplx;
@@ -563,6 +568,7 @@
    set_limits();
 }
 
+// Load all the distributions (models)
 void US_Density_Match::load_distro()
 {
    // Get a model description or set of descriptions for distribution data
@@ -582,6 +588,9 @@
 
    need_save  = false;
 
+   te_distr_info->setText(
+      QString( models[ 0 ].description ).section( ".", 0, -4 ) );
+
    for ( int jj = 0; jj < models.count(); jj++ )
    {  // Load each selected distribution model
       load_distro( models[ jj ], mdescs[ jj ] );
@@ -592,15 +601,19 @@
    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. In the dialog to follow,\n"
+   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(s) with 0% D2O." )
+                      "Begin with the model with 0% D2O." )
                       .arg( alldis.size() );
    QMessageBox::warning( this, tr( "Model Parameters" ), qmsg );
 
    // Set model distributions parameters
    set_mparms();
+
+   // Plot S lines for all models
+   rb_x_s->setChecked( true );
+   select_x_axis( ATTR_S );
 }
 
 // Create distributions from a loaded model
@@ -630,7 +643,6 @@
                                           .section( '_', 2, 2 );
    }
    tsys.editGUID     = model.editGUID;
-   tsys.plot_x       = plot_x;
 DbgLv(1) << "LD: method" << tsys.method << "mdesc" << mdesc;
 
    if ( tsys.method == "Manual"  ||  tsys.method == "CUSTOMGRID" )
@@ -702,8 +714,8 @@
  << bdens << soluID << tsys.bdensity;
 
    
-   te_distr_info->setText( tr( "Run:  " ) + tsys.run_name
-      + " (" + tsys.method + ")\n    " + tsys.analys_name );
+//   te_distr_info->setText( tr( "Run:  " ) + tsys.run_name
+//      + " (" + tsys.method + ")\n    " + tsys.analys_name );
    int nsolmc  = model.components.size();
 
    // Read in and set distribution s,k,c,... values
@@ -737,9 +749,9 @@
 DbgLv(1) << "LD: totconc" << tot_conc << "nsolin nsolnm" << nsolin << nsolnm;
    for ( int jj = 0; jj < nsolnm; jj++ )
    {
-      sol_nm      = wk_distro[ jj ];
-      sol_nm.c   /= tot_conc;
-      tsys.nm_distro << sol_nm;
+      sol_nm      = wk_distro[ jj ];  // Solute point
+      sol_nm.c   /= tot_conc;         // Normalized concentration
+      tsys.nm_distro << sol_nm;       // Saved to "normalized" distro
 if ( jj<3   ||  (jj+4)>nsolnm )
  DbgLv(1) << "LD:    jj" << jj << "soln s,d,c"
   << sol_nm.s << sol_nm.d << sol_nm.c;
@@ -748,16 +760,16 @@
 
    // Create version of distribution with boundary fraction
 
-   tsys.bo_distro.clear();
+   tsys.bo_distro.clear();                // Boundary distro
    double sum_co  = 0.0;
 
    for ( int jj = 0; jj < nsolnm; jj++ )
    {
-      sol_nm      = tsys.nm_distro[ jj ];
-      sum_co     += sol_nm.c;
-      sol_bf      = sol_nm;
-      sol_bf.f    = sum_co;
-      tsys.bo_distro << sol_bf;
+      sol_nm      = tsys.nm_distro[ jj ]; // Norm'd solute point
+      sum_co     += sol_nm.c;             // Concentration integration
+      sol_bf      = sol_nm;               // Boundary fraction solute point
+      sol_bf.f    = sum_co;               // With boundary fraction for "f"
+      tsys.bo_distro << sol_bf;           // Save to boundary distro
 if ( jj<3   ||  (jj+4)>nsolnm )
  DbgLv(1) << "LD:    jj" << jj << "solb s,d,c,f"
   << sol_bf.s << sol_bf.d << sol_bf.c << sol_bf.f;
@@ -786,6 +798,16 @@
    else
       pb_pltall->setText( tr( "Plot All Distros" ) );
 #endif
+   pb_refresh->setEnabled( true );
+   pb_reset  ->setEnabled( true );
+
+   // Update status text box
+   QString distripl = QString( model.description ).section( ".", -3, -3 );
+DbgLv(1) << "LD:  model:" << model.description;
+   QString disdesc  = tsys.label;
+   QString disinfo  = te_distr_info->toPlainText() + "\n  "
+                      + distripl + "  " + disdesc + tr( "  loaded" );
+   te_distr_info->setText( disinfo );
 DbgLv(1) << "LD: RETURN";
 }
 
@@ -1029,21 +1051,19 @@
 void US_Density_Match::set_mparms( void )
 {
 qDebug() << "mdlpar:Set Model Parameters";
+   // Open Model Parameters dialog
    US_ModelParams mpdiag( alldis, this );
 
+   // Use parameters returned
    if ( mpdiag.exec() == QDialog::Accepted )
    {  // Redo text box summarizing models; calculate vectors
-      QString dinfo;
       QString mdesc     = mdescs[ 0 ].section( mdescs[ 0 ].left( 1 ), 1, 1 );
-//      int kk            = mdesc.indexOf( "-run" );
-//      mdesc             = ( kk > 0 ) ? QString( mdesc ).mid( ( kk + 1 ) )
-//                                     : mdesc;
       mdesc             = QString( mdesc ).left( 50 );
-      dinfo             = tr( "Run:\n  " ) + mdesc + "...\n\n"
+      QString dinfo     = tr( "Run:\n  " ) + mdesc + "...\n\n"
                         + tr( "  D2O Percent  Density  Label  MDescr.\n" );
 
       for ( int jj = 0; jj < alldis.size(); jj++ )
-      {
+      {  // Compose and display a distribution line for distro info box
          double d2opct     = alldis[ jj ].d2opct;
          double bdens      = alldis[ jj ].bdensity;
          QString mlab      = alldis[ jj ].label;
@@ -1066,6 +1086,8 @@
 void US_Density_Match::select_x_axis( int ival )
 {
 DbgLv(1) << "sel_x:  ival" << ival;
+   plot_x     = ival;
+
 #if 0
    const QString xlabs[] = {   "mass", "f/f0",   "rh", "vbar",     "s" };
    const double  xvlos[] = {     2e+4,   1.0,    2e+4,  0.60,      1.0 };
@@ -1090,8 +1112,6 @@
    const double  xincs[] = {     0.01,  0.01, 1000.0,  0.01, 1e-9, 1e-9 };
 #endif
 
-   plot_x     = ival;
-
 #if 0
    lb_plt_smin->setText( tr( "Plot Limit " ) + xlabs[ plot_x ]
                        + tr( " Minimum:" ) );
@@ -1108,12 +1128,12 @@
  << xvlos[plot_x] << xvhis[plot_x] << xmins[plot_x] << xmaxs[plot_x]
  << xincs[plot_x];
 
-   build_bf_dists();
-   build_bf_vects();
+   build_bf_dists();    // Build the boundary fraction distributions
+   build_bf_vects();    // Build the boundary fraction vectors
 
 //   set_limits();
 
-   plot_data();
+   plot_data();         // Plot data
 }
 
 // Generate the BF version of the current distribution
@@ -1151,35 +1171,35 @@
       // Interpolate values for current output fraction
       j1               = j2 - 1;
       S_Solute sol_bf  = tsys->bo_distro[ j2 ];
-      sol_bf.f         = bfrac;
+      sol_bf.f         = bfrac;                   // Boundary fraction
       double x1        = tsys->bo_distro[ j1 ].f;
       double x2        = tsys->bo_distro[ j2 ].f;
       double xfrac     = ( bfrac - x1 ) / ( x2 - x1 );
       double y1        = tsys->bo_distro[ j1 ].s;
       double y2        = tsys->bo_distro[ j2 ].s;
-      sol_bf.s         = y1 + ( y2 - y1 ) * xfrac;
+      sol_bf.s         = y1 + ( y2 - y1 ) * xfrac; // Interpolated s
       y1               = tsys->bo_distro[ j1 ].k;
       y2               = tsys->bo_distro[ j2 ].k;
-      sol_bf.k         = y1 + ( y2 - y1 ) * xfrac;
+      sol_bf.k         = y1 + ( y2 - y1 ) * xfrac; // Interpolated f/f0
       y1               = tsys->bo_distro[ j1 ].c;
       y2               = tsys->bo_distro[ j2 ].c;
-      sol_bf.c         = y1 + ( y2 - y1 ) * xfrac;
+      sol_bf.c         = y1 + ( y2 - y1 ) * xfrac; // Interpolated concentration
       y1               = tsys->bo_distro[ j1 ].w;
       y2               = tsys->bo_distro[ j2 ].w;
-      sol_bf.w         = y1 + ( y2 - y1 ) * xfrac;
+      sol_bf.w         = y1 + ( y2 - y1 ) * xfrac; // Interpolated wt
       y1               = tsys->bo_distro[ j1 ].v;
       y2               = tsys->bo_distro[ j2 ].v;
-      sol_bf.v         = y1 + ( y2 - y1 ) * xfrac;
+      sol_bf.v         = y1 + ( y2 - y1 ) * xfrac; // Interpolated vbar
       y1               = tsys->bo_distro[ j1 ].d;
       y2               = tsys->bo_distro[ j2 ].d;
-      sol_bf.d         = y1 + ( y2 - y1 ) * xfrac;
+      sol_bf.d         = y1 + ( y2 - y1 ) * xfrac; // Interpolated D
 if (kk<3 || (kk+4)>nsolbf)
  DbgLv(1) << "BldBf:  kk bfrac" << kk << bfrac << "j1 j2" << j1 << j2
   << "x1 x2 y1 y2" << x1 << x2 << y1 << y2 << "d" << sol_bf.d;
  
 
-      tsys->bf_distro << sol_bf;
-      bfrac           += bfincr;
+      tsys->bf_distro << sol_bf;  // Solute point at boundary fraction
+      bfrac           += bfincr;  // Bump to next boundary fraction
    }
 
 DbgLv(1) << "BldBf: nsolbo nsolbf" << nsolbo << nsolbf;
@@ -1188,10 +1208,34 @@
 // Generate the BF version of all distributions
 void US_Density_Match::build_bf_dists()
 {
-   for ( int jj = 0; jj < alldis.size(); jj++ )
-   {
+   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
+      int npoints      = alldis[ 0 ].bf_distro.size();
+      for ( int jj = 0; jj < npoints; jj++ )
+      {
+         double dsum      = 0.0;
+         double wsum      = 0.0;
+         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;
+            dsum            += ( alldis[ ii ].bf_distro[ jj ].d * dwt );
+            wsum            += dwt;
+         }
+         double dval      = dsum / wsum;  // average diffusion coefficient
+         for ( int ii = 0; ii < ndists; ii++ )
+         {  // Propagate to all models
+            alldis[ ii ].bf_distro[ jj ].d = dval;
+         }
+      }
+   }
 }
 
 // Generate the BF vectors
@@ -1210,7 +1254,7 @@
    v_bfracs.clear();
    v_bfracs.reserve( npoints );
    for ( int jj = 0; jj < npoints; jj++ )
-   {
+   {  // Grab each fraction from 1st model's distro
       v_bfracs << alldis[ 0 ].bf_distro[ jj ].f;
    }
 DbgLv(1) << "BldVc: bf 0 1 k n" << v_bfracs[0] << v_bfracs[1]
@@ -1225,7 +1269,7 @@
    {
       // Save density for each model distribution
       double density   = alldis[ ii ].bdensity;
-      v_dens << density;
+      v_dens << density;                // Vector of densities
       v_sedcs[ ii ].clear();
       v_difcs[ ii ].clear();
       v_sedcs[ ii ].reserve( npoints );
@@ -1233,7 +1277,7 @@
 
       // Build vectors of s and D for this model
       for ( int jj = 0; jj < npoints; jj++ )
-      {
+      {  // Build s,D vectors for this model
          v_sedcs[ ii ] << alldis[ ii ].bf_distro[ jj ].s;
          v_difcs[ ii ] << alldis[ ii ].bf_distro[ jj ].d;
       }
@@ -1251,11 +1295,11 @@
    {
       v_seds.clear();
       for ( int ii = 0; ii < ndists; ii++ )
-      {
+      {  // Build sed coeffs vector across models
          v_seds << alldis[ ii ].bf_distro[ jj ].s;
       }
-      double* xx       = v_seds.data();
-      double* yy       = v_dens.data();
+      double* xx       = v_seds.data();  // X is sed coeffs
+      double* yy       = v_dens.data();  // Y is densities
       double slope, intcept, sigma, corre;
       US_Math2::linefit( &xx, &yy, &slope, &intcept, &sigma, &corre, ndists );
       // Intercept is density value and vbar is its reciprocal
@@ -1276,23 +1320,63 @@
    v_mmass.reserve( npoints );
    for ( int jj = 0; jj < npoints; jj++ )
    {
+      double sedco     = alldis[ 0 ].bf_distro[ jj ].s * 1.0e-13;
+      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
+      double vbari     = v_vbars[ jj ];
+      double mmass     = sedco * R_GC * K20 / ( difco * ( 1.0 - vbari * DENS_20W ) );
+      mmass            = qAbs( mmass );
+      v_mmass << mmass;
    }
+DbgLv(1) << "BldVc: mm 0 1 k n" << v_mmass[0] << v_mmass[1]
+ << v_mmass[npoints-2] << v_mmass[npoints-1];
 
    // Compute hydrodynamic radius values and build the vector
    v_hrads.clear();
    v_hrads.reserve( npoints );
    for ( int jj = 0; jj < npoints; jj++ )
    {
+      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
+      double frico     = R_GC * K20 / ( difco * AVOGADRO );
+      double hyrad     = frico / ( 6.0 * M_PI * VISC_20W );
+      v_hrads << hyrad;
    }
 
    // Compute frictional ratio values and build the vector
+   const double a_third = ( 1.0 / 3.0 );
    v_frats.clear();
    v_frats.reserve( npoints );
    for ( int jj = 0; jj < npoints; jj++ )
    {
+      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
+      double vbari     = v_vbars[ jj ];
+      double rzero     = pow( ( ( 0.75 / M_PI ) * vbari ), a_third );
+      double frico     = R_GC * K20 / ( difco * AVOGADRO );
+      double fzero     = 6.0 * M_PI * VISC_20W * rzero;
+      double frrat     = frico / fzero;
+      v_frats << frrat;
    }
 
 #if 0
+
+*** Mi = si*R*T/(Di_avg*(1-vbari*rho))
+
+i = boundary fraction from 0 to 1
+
+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
+
+*** --> distributions to plot, let user choose which
+#endif
+#if 0
    QVector< double >             v_bfracs;
    QVector< double >             v_vbars;
    QVector< double >             v_mmass;

Modified: trunk/programs/us_density_match/us_density_match.h
===================================================================
--- trunk/programs/us_density_match/us_density_match.h	2019-08-12 22:40:23 UTC (rev 2807)
+++ trunk/programs/us_density_match/us_density_match.h	2019-08-13 20:11:33 UTC (rev 2808)
@@ -24,17 +24,16 @@
    QList< S_Solute >   nm_distro;      // Normalized concentration distro
    QList< S_Solute >   bo_distro;      // Boundary distro w/ orig points
    QList< S_Solute >   bf_distro;      // Boundary fractions distro
-   QString             run_name;
-   QString             analys_name;
-   QString             method;
-   QString             editGUID;
-   QString             solutionGUID;
-   QString             label;
-   int                 distro_type;
-   int                 plot_x;
-   int                 solutionID;
-   double              d2opct;
-   double              bdensity;
+   QString             run_name;       // Distro run name
+   QString             analys_name;    // Distro analysis name
+   QString             method;         // Model method (e.g., "2DSA")
+   QString             editGUID;       // Associated edit GUID
+   QString             solutionGUID;   // Associated solution GUID
+   QString             label;          // Distro label (channel description)
+   int                 distro_type;    // Distro type flag
+   int                 solutionID;     // Associated solution db ID
+   double              d2opct;         // D2O percent for distro
+   double              bdensity;       // Distro buffer density
 } DisSys;
 
 //! \brief Less-than function for sorting distributions
@@ -67,16 +66,11 @@
       US_Help       showHelp;
  
       QwtCounter*   ct_resolu;
-      QwtCounter*   ct_xreso;
-      QwtCounter*   ct_yreso;
-      QwtCounter*   ct_zfloor;
       QwtCounter*   ct_plt_kmin;     
       QwtCounter*   ct_plt_kmax;     
       QwtCounter*   ct_plt_smin;     
       QwtCounter*   ct_plt_smax;     
       QwtCounter*   ct_plt_dlay;     
-      QwtCounter*   ct_curr_distr;
-      QwtCounter*   ct_tolerance;
       QwtCounter*   ct_division;
       QwtCounter*   ct_smoothing;
       QwtCounter*   ct_boundaryPct;
@@ -88,8 +82,6 @@
 
       US_Disk_DB_Controls* dkdb_cntrls;
 
-      QPushButton*  pb_pltall;
-      QPushButton*  pb_stopplt;
       QPushButton*  pb_refresh;
       QPushButton*  pb_reset;
       QPushButton*  pb_prefilt;
@@ -118,15 +110,15 @@
 
       QButtonGroup* bg_x_axis;
 
-      QVector< DisSys >             alldis;
+      QVector< DisSys >             alldis;    // All distributions
 
-      QVector< double >             v_bfracs;
-      QVector< double >             v_vbars;
-      QVector< double >             v_mmass;
-      QVector< double >             v_hrads;
-      QVector< double >             v_frats;
-      QVector< QVector< double > >  v_sedcs;
-      QVector< QVector< double > >  v_difcs;
+      QVector< double >             v_bfracs;  // Boundary fraction vector
+      QVector< double >             v_vbars;   // Vector of vbars per fraction
+      QVector< double >             v_mmass;   // Vector of molar masses per fraction
+      QVector< double >             v_hrads;   // Vector of hydro radii per fraction
+      QVector< double >             v_frats;   // Vector of frict ratios per fraction
+      QVector< QVector< double > >  v_sedcs;   // Vector of sedi coeff vectors per distro
+      QVector< QVector< double > >  v_difcs;   // Vector of diff coeff vectors per distro
 
       double        resolu;
       double        plt_smin;

Modified: trunk/programs/us_density_match/us_model_params.cpp
===================================================================
--- trunk/programs/us_density_match/us_model_params.cpp	2019-08-12 22:40:23 UTC (rev 2807)
+++ trunk/programs/us_density_match/us_model_params.cpp	2019-08-13 20:11:33 UTC (rev 2808)
@@ -125,9 +125,9 @@
             this,       SLOT(   compute_densities() ) );
    QFont font( US_GuiSettings::fontFamily(), US_GuiSettings::fontSize() );
    QFontMetrics fm( font );
-   int fhigh = fm.lineSpacing();
+//   int fhigh = fm.lineSpacing();
+//   int lhigh = fhigh * 10 + 12;
    int fwide = fm.width( QChar( '6' ) );
-   int lhigh = fhigh * 10 + 12;
    int lwide = fwide * ( maxdlen + 2 );
 
    adjustSize();



More information about the us-commits mailing list