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 }