#include <facefluxcompositional.h>
Definition at line 14 of file facefluxcompositional.h.
FaceFluxCompositional::FaceFluxCompositional | ( | OrthoMesh & | mesh, | |
FlashCompositional & | flash, | |||
const VecDouble & | K, | |||
double | v1, | |||
double | v2, | |||
double | sr1, | |||
double | sr2, | |||
double | grav | |||
) |
Definition at line 5 of file facefluxcompositional.cpp.
00006 :FaceFluxFunction(3),m_flash(flash),m_mob(v1,v2,sr1,sr2),m_gravMob(v1,v2,sr1,sr2),m_Dmob(v1,v2,sr1,sr2),m_DgravMob(v1,v2,sr1,sr2),m_pP(NULL),m_K(K),m_grav(grav) 00007 { 00008 assert(flash.numPhases()==2); 00009 m_vNormalVel.reinit(mesh.numFaces()); 00010 assert(m_grav>=0.); 00011 //Allocate the vectors of densities 00012 m_densities1.reinit(2); 00013 m_densities2.reinit(2); 00014 00015 }
virtual FaceFluxCompositional::~FaceFluxCompositional | ( | ) | [inline, virtual] |
Definition at line 32 of file facefluxcompositional.h.
void FaceFluxCompositional::fluxAtFace | ( | VecDouble & | vFlux, | |
OrthoMesh::Face_It & | faceIt, | |||
int | face, | |||
int | cell1, | |||
int | cell2, | |||
const VecDouble & | Q1, | |||
const VecDouble & | Q2 | |||
) | [virtual] |
Definition at line 19 of file facefluxcompositional.cpp.
00020 { 00021 assert(vFlux.size()); 00022 assert((unsigned) face < m_vNormalVel.size()); 00023 static FlashData data1(2,3),data2(2,3); 00024 static VecDouble phasesVol(2); 00025 static VecDouble vFlux1(3); 00026 static VecDouble vFlux2(3); 00027 const VecDouble &P = getPressure(); 00028 double K1 = getK()(cell1); 00029 double K2 = getK()(cell2); 00030 double vel = m_vNormalVel(face); 00031 00032 m_flash.flash(P(cell1),Q1,data1); 00033 m_flash.flash(P(cell2),Q2,data2); 00034 00035 m_flash.getPhasesVolume(P(cell1),data1,phasesVol); 00036 m_Sw1=phasesVol(0)/(phasesVol(0)+phasesVol(1)); 00037 data1.getPhasesDensities(m_densities1,m_flash.getComponentsMolarMass(),phasesVol); 00038 00039 double mobW=m_mob(m_Sw1); 00040 double gravFlux=K1*m_gravMob(m_Sw1)*(m_densities1(1)-m_densities1(0))*m_grav; 00041 double vel0 = mobW*vel + gravFlux; 00042 double vel1 = (1.0-mobW)*vel - gravFlux; 00043 vFlux(0)=data1.getMoles(0,0)/phasesVol(0)*vel0 + data1.getMoles(1,0)/phasesVol(1)*vel1; 00044 vFlux(1)=data1.getMoles(0,1)/phasesVol(0)*vel0 + data1.getMoles(1,1)/phasesVol(1)*vel1; 00045 vFlux(2)=data1.getMoles(0,2)/phasesVol(0)*vel0 + 0; 00046 00047 00048 00049 m_flash.getPhasesVolume(P(cell2),data2,phasesVol); 00050 m_Sw2=phasesVol(0)/(phasesVol(0)+phasesVol(1)); 00051 data2.getPhasesDensities(m_densities2,m_flash.getComponentsMolarMass(),phasesVol); 00052 00053 00054 mobW=m_mob(m_Sw2); 00055 gravFlux = K2*m_gravMob(m_Sw2)*(m_densities2(1)-m_densities2(0))*m_grav; 00056 vel0=mobW*vel + gravFlux; 00057 vel0=(1-mobW)*vel - gravFlux; 00058 00059 vFlux(0)+=data2.getMoles(0,0)/phasesVol(0)*vel0 + data2.getMoles(1,0)/phasesVol(1)*vel1; 00060 vFlux(1)+=data2.getMoles(0,1)/phasesVol(0)*vel0 + data2.getMoles(1,1)/phasesVol(1)*vel1; 00061 vFlux(2)+=data2.getMoles(0,2)/phasesVol(0)*vel0 + 0; 00062 00063 assert(data2.getMoles(1,2) == 0.0); 00064 assert(data1.getMoles(1,2) == 0.0); 00065 00066 vFlux*=0.5; 00067 00068 00069 //Store the cells just to check 00070 m_cell1=cell1; 00071 m_cell2=cell2; 00072 }
virtual const VecDouble& FaceFluxCompositional::getK | ( | ) | [inline, virtual] |
Definition at line 35 of file facefluxcompositional.h.
00035 {return m_K;}
virtual const VecDouble& FaceFluxCompositional::getPressure | ( | ) | [inline, virtual] |
Definition at line 34 of file facefluxcompositional.h.
void FaceFluxCompositional::maxGlobalCharVelocity | ( | double | vel[3] | ) | [virtual] |
Reimplemented from FaceFluxFunction.
Definition at line 106 of file facefluxcompositional.cpp.
00107 { 00108 double maxVel=NumericMethods::vectorMaxAbsValue(m_vNormalVel); 00109 vel[X]= maxVel*m_Dmob.getMaxNorm(0,1); 00110 vel[Y]=0; 00111 vel[Z]=0; 00112 return; 00113 }
void FaceFluxCompositional::maxLocalCharVelocity | ( | VecDouble & | vout, | |
OrthoMesh::Face_It & | faceIt, | |||
int | face, | |||
int | cell1, | |||
int | cell2, | |||
const VecDouble & | Q1, | |||
const VecDouble & | Q2 | |||
) | [virtual] |
Definition at line 83 of file facefluxcompositional.cpp.
00084 { 00085 assert(m_cell1==cell1); 00086 assert(m_cell2==cell2); 00087 if (m_Sw1 > m_Sw2) 00088 std::swap(m_Sw1,m_Sw2); 00089 double grav1 = getK()(cell1)*fabs(m_densities1(0)-m_densities1(1)); 00090 double grav2 = getK()(cell2)*fabs(m_densities2(0)-m_densities2(1)); 00091 vout= 00092 m_vNormalVel(face)*m_Dmob.getMaxNorm(m_Sw1,m_Sw2) + 00093 m_DgravMob.getMaxNorm(m_Sw1,m_Sw2)*std::max(grav1,grav2); 00094 00095 00096 }
void FaceFluxCompositional::transformToComponentMoles | ( | VecDouble & | v1 | ) | [virtual] |
Definition at line 99 of file facefluxcompositional.cpp.
void FaceFluxCompositional::updateDynamicData | ( | DynamicBase & | dynMod | ) | [virtual] |
Reimplemented from FaceFluxFunction.
Definition at line 75 of file facefluxcompositional.cpp.
00076 { 00077 dynMod.getNormalVelocityAtFaces(m_vNormalVel); 00078 m_pP=&dynMod.getPressureAtCells(); 00079 }
double FaceFluxCompositional::m_cell1 [private] |
Definition at line 26 of file facefluxcompositional.h.
double FaceFluxCompositional::m_cell2 [private] |
Definition at line 26 of file facefluxcompositional.h.
VecDouble FaceFluxCompositional::m_densities1 [private] |
Definition at line 25 of file facefluxcompositional.h.
VecDouble FaceFluxCompositional::m_densities2 [private] |
Definition at line 25 of file facefluxcompositional.h.
Definition at line 21 of file facefluxcompositional.h.
Definition at line 20 of file facefluxcompositional.h.
FlashCompositional& FaceFluxCompositional::m_flash [private] |
Definition at line 17 of file facefluxcompositional.h.
double FaceFluxCompositional::m_grav [private] |
Definition at line 27 of file facefluxcompositional.h.
Definition at line 19 of file facefluxcompositional.h.
const VecDouble& FaceFluxCompositional::m_K [private] |
Definition at line 24 of file facefluxcompositional.h.
FChaventMobility FaceFluxCompositional::m_mob [private] |
Definition at line 18 of file facefluxcompositional.h.
VecDouble const VecDouble* FaceFluxCompositional::m_pP [private] |
Definition at line 22 of file facefluxcompositional.h.
double FaceFluxCompositional::m_Sw1 [private] |
Definition at line 26 of file facefluxcompositional.h.
double FaceFluxCompositional::m_Sw2 [private] |
Definition at line 26 of file facefluxcompositional.h.
VecDouble FaceFluxCompositional::m_vNormalVel [private] |
Definition at line 22 of file facefluxcompositional.h.