00001 #include "flashco2brinepw.h"
00002 #include "units.h"
00003
00004
00005 FlashCO2BrinePw::FlashCO2BrinePw(OrthoMesh &mesh,double T,Function1D &pc)
00006 :FlashCO2Brine(mesh,T),m_pc(pc)
00007 {
00008
00009 }
00010
00011
00012
00013 void FlashCO2BrinePw::flash(double P, const VecDouble &compTotalMoles, FlashData &data)
00014 {
00015 double PM = convertP(P,compTotalMoles(WATER));
00016 FlashCO2Brine::flash(PM,compTotalMoles,data);
00017 }
00018
00019
00020
00021 void FlashCO2BrinePw::getPhasesVolume(double P, const FlashData &data,VecDouble &phasesVol)
00022 {
00023 double PM = convertP(P,data.getMoles(AQUEOUS,WATER) + data.getMoles(CO2_RICH,WATER));
00024 FlashCO2Brine::getPhasesVolume(PM,data,phasesVol);
00025 }
00026
00027
00028
00034 double FlashCO2BrinePw::convertP(const double &Pw,const double &mt_w)
00035 {
00036 double Sw=Units::cm3Tom3(LIQ_WATER_MOLAR_VOLUME*mt_w);
00037 return Pw + (1-Sw)*m_pc(Sw);
00038 }