#5474 Support pascal conversion

This commit is contained in:
Gaute Lindkvist
2020-02-06 16:40:12 +01:00
parent 33a319d504
commit 65b937303a
2 changed files with 52 additions and 13 deletions

View File

@@ -27,6 +27,11 @@
const double RiaWellLogUnitTools::GRAVITY_ACCEL = 9.81;
const double RiaWellLogUnitTools::UNIT_WEIGHT_OF_WATER = RiaWellLogUnitTools::GRAVITY_ACCEL * 1000.0; // N / m^3
bool stringsMatch( const QString& lhs, const QString& rhs )
{
return QString::compare( lhs, rhs, Qt::CaseInsensitive ) == 0;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -35,6 +40,14 @@ QString RiaWellLogUnitTools::noUnitString()
return "NO_UNIT";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaWellLogUnitTools::sg_emwUnitString()
{
return "sg_EMW";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -67,6 +80,14 @@ QString RiaWellLogUnitTools::gPerCm3UnitString()
return "g/cm3";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RiaWellLogUnitTools::pascalUnitString()
{
return "pascal";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -96,67 +117,83 @@ bool RiaWellLogUnitTools::convertValues( const std::vector<double>& tvdRKBs,
{
CAF_ASSERT( valuesOut );
if ( unitsIn == unitsOut )
if ( stringsMatch( unitsIn, unitsOut ) )
{
*valuesOut = valuesIn;
return true;
}
if ( unitsIn == gPerCm3UnitString() && unitsOut == barUnitString() )
if ( stringsMatch( unitsIn, gPerCm3UnitString() ) && stringsMatch( unitsOut, barUnitString() ) )
{
*valuesOut = convertGpcm3ToBar( tvdRKBs, valuesIn );
return true;
}
else if ( unitsIn == barUnitString() && unitsOut == gPerCm3UnitString() )
else if ( stringsMatch( unitsOut, barUnitString() ) && stringsMatch( unitsOut, gPerCm3UnitString() ) )
{
*valuesOut = convertBarToGpcm3( tvdRKBs, valuesIn );
return true;
}
else if ( unitsIn == RiaWellLogUnitTools::noUnitString() && unitsOut == gPerCm3UnitString() )
else if ( ( stringsMatch( unitsIn, noUnitString() ) || stringsMatch( unitsIn, sg_emwUnitString() ) ) &&
stringsMatch( unitsOut, gPerCm3UnitString() ) )
{
*valuesOut = convertNormalizedByPPToBar( tvdRKBs, valuesIn );
*valuesOut = convertBarToGpcm3( tvdRKBs, *valuesOut );
return true;
}
else if ( unitsIn == gPerCm3UnitString() && unitsOut == RiaWellLogUnitTools::noUnitString() )
else if ( stringsMatch( unitsIn, gPerCm3UnitString() ) &&
( stringsMatch( unitsOut, noUnitString() ) || stringsMatch( unitsOut, sg_emwUnitString() ) ) )
{
*valuesOut = convertGpcm3ToBar( tvdRKBs, valuesIn );
*valuesOut = convertBarToNormalizedByPP( tvdRKBs, *valuesOut );
return true;
}
else if ( unitsIn == MPaUnitString() && unitsOut == barUnitString() )
else if ( stringsMatch( unitsIn, MPaUnitString() ) && stringsMatch( unitsOut, barUnitString() ) )
{
*valuesOut = multiply( valuesIn, 1.0 / MPaPerBar() );
return true;
}
else if ( unitsIn == barX100UnitString() && unitsOut == MPaUnitString() )
else if ( stringsMatch( unitsIn, barX100UnitString() ) && stringsMatch( unitsOut, MPaUnitString() ) )
{
*valuesOut = multiply( valuesIn, 100.0 );
*valuesOut = multiply( *valuesOut, MPaPerBar() );
return true;
}
else if ( unitsIn == barX100UnitString() && unitsOut == barUnitString() )
else if ( stringsMatch( unitsIn, barX100UnitString() ) && stringsMatch( unitsOut, barUnitString() ) )
{
*valuesOut = multiply( valuesIn, 100 );
return true;
}
else if ( unitsIn == barUnitString() && unitsOut == MPaUnitString() )
else if ( stringsMatch( unitsIn, barUnitString() ) && stringsMatch( unitsOut, MPaUnitString() ) )
{
*valuesOut = multiply( valuesIn, MPaPerBar() );
return true;
}
else if ( unitsIn == barUnitString() && unitsOut == barX100UnitString() )
else if ( stringsMatch( unitsIn, barUnitString() ) && stringsMatch( unitsOut, barX100UnitString() ) )
{
*valuesOut = multiply( valuesIn, 1.0 / 100.0 );
return true;
}
else if ( unitsIn == RiaWellLogUnitTools::noUnitString() && unitsOut == barUnitString() )
else if ( ( stringsMatch( unitsIn, noUnitString() ) || stringsMatch( unitsIn, sg_emwUnitString() ) ) &&
stringsMatch( unitsOut, barUnitString() ) )
{
*valuesOut = convertNormalizedByPPToBar( tvdRKBs, valuesIn );
return true;
}
else if ( unitsIn == barUnitString() && unitsOut == RiaWellLogUnitTools::noUnitString() )
else if ( stringsMatch( unitsIn, barUnitString() ) &&
( stringsMatch( unitsOut, noUnitString() ) || stringsMatch( unitsOut, sg_emwUnitString() ) ) )
{
*valuesOut = convertBarToNormalizedByPP( tvdRKBs, valuesIn );
return true;
}
else if ( stringsMatch( unitsIn, pascalUnitString() ) && stringsMatch( unitsOut, barUnitString() ) )
{
*valuesOut = multiply( valuesIn, 1.0 / pascalPerBar() );
return true;
}
else if ( stringsMatch( unitsIn, barUnitString() ) && stringsMatch( unitsOut, pascalUnitString() ) )
{
*valuesOut = multiply( valuesIn, pascalPerBar() );
return true;
}
return false;
}

View File

@@ -32,10 +32,12 @@ public:
static const double UNIT_WEIGHT_OF_WATER;
static QString noUnitString();
static QString sg_emwUnitString();
static QString barUnitString();
static QString barX100UnitString();
static QString MPaUnitString();
static QString gPerCm3UnitString();
static QString pascalUnitString();
public:
static std::vector<double> convertDepths( const std::vector<double>& depthsIn,