Changeset 2813


Ignore:
Timestamp:
Aug 14, 2019 6:27:09 PM (3 months ago)
Author:
gegorbet
Message:

density_match fixes for D2O-percent zero not in the first row

Location:
trunk/programs/us_density_match
Files:
2 edited

Legend:

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

    r2812 r2813  
    10281028void US_Density_Match::remove_distro( void )
    10291029{
    1030 qDebug() << "rmvdis:Remove Distros";
     1030DbgLv(1) << "rmvdis:Remove Distros";
    10311031   US_RemoveModels rmvd( alldis );
    10321032
     
    10421042
    10431043      curr_distr = 0;
    1044 qDebug() << "rmvdis:Accepted";
    1045    }
    1046 
    1047 qDebug() << "rmvdis:plot_data";
     1044DbgLv(1) << "rmvdis:Accepted";
     1045   }
     1046
     1047DbgLv(1) << "rmvdis:plot_data";
    10481048   plot_data();
    1049 qDebug() << "rmvdis:DONE";
     1049DbgLv(1) << "rmvdis:DONE";
    10501050}
    10511051
     
    10531053void US_Density_Match::set_mparms( void )
    10541054{
    1055 qDebug() << "mdlpar:Set Model Parameters";
     1055DbgLv(1) << "mdlpar:Set Model Parameters";
    10561056   // Open Model Parameters dialog
    10571057   US_ModelParams mpdiag( alldis, this );
     
    10601060   if ( mpdiag.exec() == QDialog::Accepted )
    10611061   {  // Redo text box summarizing models; calculate vectors
     1062DbgLv(1) << "mdlpar: Accepted";
    10621063      QString mdesc     = mdescs[ 0 ].section( mdescs[ 0 ].left( 1 ), 1, 1 );
    10631064      mdesc             = QString( mdesc ).left( 50 );
     
    13231324DbgLv(1) << "BldVc: vb 0 1 k n" << v_vbars[0] << v_vbars[1]
    13241325 << v_vbars[npoints-2] << v_vbars[npoints-1];
     1326   // Determine the distribution index of zero-percent-D2O
     1327   int zx           = 0;
     1328   for ( int ii = 0; ii < ndists; ii++ )
     1329   {
     1330      if ( alldis[ ii ].d2opct == 0.0 )
     1331      {
     1332         zx               = ii;
     1333         break;
     1334      }
     1335   }
     1336DbgLv(1) << "BldVc:   zx" << zx;
    13251337
    13261338   // Compute molar mass values and build the vector
     
    13321344//      double sedco     = alldis[ 0 ].bf_distro[ jj ].s * 1.0e-13;
    13331345//      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
    1334       double sedco     = v_sedcs[ 0 ][ jj ] * 1.0e-13;
    1335       double difco     = v_difcs[ 0 ][ jj ] * 1.0e-7;
     1346      double sedco     = v_sedcs[ zx ][ jj ] * 1.0e-13;
     1347      double difco     = v_difcs[ zx ][ jj ] * 1.0e-7;
    13361348      double vbari     = v_vbars[ jj ];
    13371349      double mmass     = sedco * R_GC * K20 / ( difco * ( 1.0 - vbari * DENS_20W ) );
     
    13541366      // *** ri = fi/(6 * pi * eta)   <-- hydrodynamic radius
    13551367//      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
    1356       double difco     = v_difcs[ 0 ][ jj ] * 1.0e-7;
     1368      double difco     = v_difcs[ zx ][ jj ] * 1.0e-7;
    13571369      double frico     = R_GC * K20 / ( difco * AVOGADRO );
    13581370      double hyrad     = frico / ( 6.0 * M_PI * VISC_20W );
     
    13761388      // *** ri = fi/(6 * pi * eta)   <-- hydrodynamic radius
    13771389//      double difco     = alldis[ 0 ].bf_distro[ jj ].d * 1.0e-7;
    1378       double difco     = v_difcs[ 0 ][ jj ] * 1.0e-7;
     1390      double difco     = v_difcs[ zx ][ jj ] * 1.0e-7;
    13791391      double vbari     = v_vbars[ jj ];
    13801392//      double rzero     = pow( ( ( 0.75 / M_PI ) * vbari ), a_third );
  • trunk/programs/us_density_match/us_model_params.cpp

    r2812 r2813  
    184184   }
    185185
     186DbgLv(1) << " acc: ACCEPT";
    186187   accept();
    187 }
    188 
    189 // Private slot to do the actual removal of distributions and close
     188DbgLv(1) << " acc: return";
     189}
     190
     191// Private slot to do close/reject without returning parameters
    190192void US_ModelParams::canceled()
    191193{
     
    194196}
    195197
     198// Compute densities for all rows where D2O percent is not zero
    196199void US_ModelParams::compute_densities()
    197200{
     
    200203   int nzd2pc     = 0;
    201204   int npd2pc     = 0;
     205   int kk         = -1;
    202206   bool misspc    = false;
    203207   double d2opct  = -1.0;
    204208   double denszpc = 0.0;
    205209   double density = 0.0;
     210   QVector< double > m_dens;
     211   QVector< double > m_d2op;
     212   QVector< QLineEdit* > m_lned;
     213   m_dens.fill( 0.0, nd_orig );
     214   m_d2op.fill( 0.0, nd_orig );
    206215DbgLv(1) << " cdn: ochilds size" << ochilds.size();
     216
    207217   for ( int jj = 0; jj < ochilds.size(); jj++ )
    208218   {
     
    212222      QString pname   = cname.section( ":", 0, 0 );
    213223      if      ( pname == "D2OP" )
    214       {
     224      {  // Handle D2O percent text
    215225         d2opct          = lned->text().toDouble();
    216226         if ( d2opct == 0.0 )
    217          {
     227         {  // If zero, bump count and test if not 1st row
    218228            nzd2pc++;
    219229            if ( npd2pc > 0 )
     
    221231         }
    222232         else
    223          {
     233         {  // For non-zero, bump count, test if follow zero row
    224234            npd2pc++;
    225235            if ( nzd2pc == 0 )
    226236               misspc         = true;
    227237         }
     238         // Save the D2O percent in a work vector
     239         kk++;
     240         m_d2op[ kk ]   = d2opct;
    228241      }
    229242      else if ( pname == "DENS" )
    230       {
     243      {  // Handle Density text
    231244         density         = lned->text().toDouble();
    232245         if ( d2opct == 0.0 )
    233          {
     246         {  // Save density following percent=0
    234247            denszpc        = density;
    235248         }
    236          else
    237          {
     249         else if ( nzd2pc > 0 )
     250         {  // Compute density where percent!=0; update text box
    238251            density        = denszpc + d2opct * dnslope;
    239252            lned->setText( QString::number( density ) );
    240253         }
     254         else
     255         {  // Flag percent>0 density when no z-density yet found
     256            density        = 0.0;
     257            misspc         = true;
     258         }
     259         // Save the density in a work vector; save pointer to textbox
     260         m_dens[ kk ]   = density;
     261         m_lned << lned;
    241262      }
    242263   }
    243264DbgLv(1) << " cdn: misspc" << misspc;
    244 }
    245 
     265
     266   if ( misspc )
     267   {  // Fill in computed densities before first pct=0
     268      for ( int ii = 0; ii < nd_orig; ii++ )
     269      {
     270         density        = m_dens[ ii ];
     271         if ( density == 0.0 )
     272         {  // Compute density when unable to do so during 1st pass
     273            d2opct         = m_d2op[ ii ];
     274            density        = denszpc + d2opct * dnslope;
     275            m_lned[ ii ]->setText( QString::number( density ) );
     276DbgLv(1) << " cdn:   misspc ii" << ii << "density" << density;
     277         }
     278      }
     279   }
     280}
     281
     282// Test if all needed values have been filled in; set Accept accordingly
    246283bool US_ModelParams::values_filled()
    247284{
Note: See TracChangeset for help on using the changeset viewer.