Commit 9a841693 authored by Alexander Kissinger's avatar Alexander Kissinger
Browse files

Adapted all implicit models and the geomechanics model such that the...

Adapted all implicit models and the geomechanics model such that the addOutputVtkFields() function only considers interior nodes. This is relevant for parallelisation. See flyspray task 221 for details.
Reviewed by Bernd.

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@13429 2fb0f335-1f38-0410-981e-8018bf24f1b0
parent 1567fb1c
......@@ -253,130 +253,133 @@ public:
// loop over all elements (cells)
for (; eIt != eEndIt; ++eIt)
{
unsigned int eIdx = this->problem_().model().elementMapper().map(*eIt);
rank[eIdx] = this->gridView_().comm().rank();
if(eIt->partitionType() == Dune::InteriorEntity)
{
unsigned int eIdx = this->problem_().model().elementMapper().map(*eIt);
rank[eIdx] = this->gridView_().comm().rank();
fvGeometry.update(this->gridView_(), *eIt);
elemBcTypes.update(this->problem_(), *eIt, fvGeometry);
elemVolVars.update(this->problem_(), *eIt, fvGeometry, false);
fvGeometry.update(this->gridView_(), *eIt);
elemBcTypes.update(this->problem_(), *eIt, fvGeometry);
elemVolVars.update(this->problem_(), *eIt, fvGeometry, false);
// loop over all local vertices of the cell
// loop over all local vertices of the cell
#if DUNE_VERSION_NEWER(DUNE_COMMON, 2, 4)
int numScv = eIt->subEntities(dim);
int numScv = eIt->subEntities(dim);
#else
int numScv = eIt->template count<dim>();
int numScv = eIt->template count<dim>();
#endif
for (int scvIdx = 0; scvIdx < numScv; ++scvIdx)
{
unsigned int globalIdx = this->dofMapper().map(*eIt, scvIdx, dim);
pressure[globalIdx] = elemVolVars[scvIdx].pressure();
moleFraction0[globalIdx] = elemVolVars[scvIdx].moleFraction(0);
moleFraction1[globalIdx] = elemVolVars[scvIdx].moleFraction(1);
massFraction0[globalIdx] = elemVolVars[scvIdx].massFraction(0);
massFraction1[globalIdx] = elemVolVars[scvIdx].massFraction(1);
// in case of rock mechanics sign convention solid displacement is
// defined to be negative if it points in positive coordinate direction
if(rockMechanicsSignConvention_){
DimVector tmpDispl;
tmpDispl = Scalar(0);
tmpDispl -= elemVolVars[scvIdx].displacement();
displacement[globalIdx] = tmpDispl;
}
for (int scvIdx = 0; scvIdx < numScv; ++scvIdx)
{
unsigned int globalIdx = this->dofMapper().map(*eIt, scvIdx, dim);
pressure[globalIdx] = elemVolVars[scvIdx].pressure();
moleFraction0[globalIdx] = elemVolVars[scvIdx].moleFraction(0);
moleFraction1[globalIdx] = elemVolVars[scvIdx].moleFraction(1);
massFraction0[globalIdx] = elemVolVars[scvIdx].massFraction(0);
massFraction1[globalIdx] = elemVolVars[scvIdx].massFraction(1);
// in case of rock mechanics sign convention solid displacement is
// defined to be negative if it points in positive coordinate direction
if(rockMechanicsSignConvention_){
DimVector tmpDispl;
tmpDispl = Scalar(0);
tmpDispl -= elemVolVars[scvIdx].displacement();
displacement[globalIdx] = tmpDispl;
}
else
displacement[globalIdx] = elemVolVars[scvIdx].displacement();
density[globalIdx] = elemVolVars[scvIdx].density();
viscosity[globalIdx] = elemVolVars[scvIdx].viscosity();
porosity[globalIdx] = elemVolVars[scvIdx].porosity();
Kx[globalIdx] = this->problem_().spatialParams().intrinsicPermeability(
*eIt, fvGeometry, scvIdx)[0][0];
// calculate cell quantities by adding up scv quantities and dividing through numScv
cellPorosity[eIdx] += elemVolVars[scvIdx].porosity() / numScv;
cellKx[eIdx] += this->problem_().spatialParams().intrinsicPermeability(
*eIt, fvGeometry, scvIdx)[0][0] / numScv;
cellPressure[eIdx] += elemVolVars[scvIdx].pressure() / numScv;
};
// calculate cell quantities for variables which are defined at the integration point
Scalar tmpEffPoro;
DimMatrix tmpEffStress;
tmpEffStress = Scalar(0);
tmpEffPoro = Scalar(0);
// loop over all scv-faces of the cell
for (int faceIdx = 0; faceIdx < fvGeometry.numScvf; faceIdx++) {
//prepare the flux calculations (set up and prepare geometry, FE gradients)
FluxVariables fluxVars(this->problem_(),
*eIt, fvGeometry,
faceIdx,
elemVolVars);
// divide by number of scv-faces and sum up edge values
tmpEffPoro = fluxVars.effPorosity() / fvGeometry.numScvf;
tmpEffStress = fluxVars.sigma();
tmpEffStress /= fvGeometry.numScvf;
effPorosity[eIdx] += tmpEffPoro;
else
displacement[globalIdx] = elemVolVars[scvIdx].displacement();
density[globalIdx] = elemVolVars[scvIdx].density();
viscosity[globalIdx] = elemVolVars[scvIdx].viscosity();
porosity[globalIdx] = elemVolVars[scvIdx].porosity();
Kx[globalIdx] = this->problem_().spatialParams().intrinsicPermeability(
*eIt, fvGeometry, scvIdx)[0][0];
// calculate cell quantities by adding up scv quantities and dividing through numScv
cellPorosity[eIdx] += elemVolVars[scvIdx].porosity() / numScv;
cellKx[eIdx] += this->problem_().spatialParams().intrinsicPermeability(
*eIt, fvGeometry, scvIdx)[0][0] / numScv;
cellPressure[eIdx] += elemVolVars[scvIdx].pressure() / numScv;
};
// calculate cell quantities for variables which are defined at the integration point
Scalar tmpEffPoro;
DimMatrix tmpEffStress;
tmpEffStress = Scalar(0);
tmpEffPoro = Scalar(0);
// loop over all scv-faces of the cell
for (int faceIdx = 0; faceIdx < fvGeometry.numScvf; faceIdx++) {
//prepare the flux calculations (set up and prepare geometry, FE gradients)
FluxVariables fluxVars(this->problem_(),
*eIt, fvGeometry,
faceIdx,
elemVolVars);
// divide by number of scv-faces and sum up edge values
tmpEffPoro = fluxVars.effPorosity() / fvGeometry.numScvf;
tmpEffStress = fluxVars.sigma();
tmpEffStress /= fvGeometry.numScvf;
effPorosity[eIdx] += tmpEffPoro;
// in case of rock mechanics sign convention compressive stresses
// are defined to be positive
if(rockMechanicsSignConvention_){
effStressX[eIdx] -= tmpEffStress[0];
if (dim >= 2) {
effStressY[eIdx] -= tmpEffStress[1];
}
if (dim >= 3) {
effStressZ[eIdx] -= tmpEffStress[2];
}
}
else{
effStressX[eIdx] += tmpEffStress[0];
if (dim >= 2) {
effStressY[eIdx] += tmpEffStress[1];
}
if (dim >= 3) {
effStressZ[eIdx] += tmpEffStress[2];
}
}
}
// calculate total stresses
// in case of rock mechanics sign convention compressive stresses
// are defined to be positive
// are defined to be positive and total stress is calculated by adding the pore pressure
if(rockMechanicsSignConvention_){
effStressX[eIdx] -= tmpEffStress[0];
totalStressX[eIdx][0] = effStressX[eIdx][0] + cellPressure[eIdx];
totalStressX[eIdx][1] = effStressX[eIdx][1];
totalStressX[eIdx][2] = effStressX[eIdx][2];
if (dim >= 2) {
effStressY[eIdx] -= tmpEffStress[1];
totalStressY[eIdx][0] = effStressY[eIdx][0];
totalStressY[eIdx][1] = effStressY[eIdx][1] + cellPressure[eIdx];
totalStressY[eIdx][2] = effStressY[eIdx][2];
}
if (dim >= 3) {
effStressZ[eIdx] -= tmpEffStress[2];
totalStressZ[eIdx][0] = effStressZ[eIdx][0];
totalStressZ[eIdx][1] = effStressZ[eIdx][1];
totalStressZ[eIdx][2] = effStressZ[eIdx][2] + cellPressure[eIdx];
}
}
else{
effStressX[eIdx] += tmpEffStress[0];
totalStressX[eIdx][0] = effStressX[eIdx][0] - cellPressure[eIdx];
totalStressX[eIdx][1] = effStressX[eIdx][1];
totalStressX[eIdx][2] = effStressX[eIdx][2];
if (dim >= 2) {
effStressY[eIdx] += tmpEffStress[1];
totalStressY[eIdx][0] = effStressY[eIdx][0];
totalStressY[eIdx][1] = effStressY[eIdx][1] - cellPressure[eIdx];
totalStressY[eIdx][2] = effStressY[eIdx][2];
}
if (dim >= 3) {
effStressZ[eIdx] += tmpEffStress[2];
totalStressZ[eIdx][0] = effStressZ[eIdx][0];
totalStressZ[eIdx][1] = effStressZ[eIdx][1];
totalStressZ[eIdx][2] = effStressZ[eIdx][2] - cellPressure[eIdx];
}
}
}
// calculate total stresses
// in case of rock mechanics sign convention compressive stresses
// are defined to be positive and total stress is calculated by adding the pore pressure
if(rockMechanicsSignConvention_){
totalStressX[eIdx][0] = effStressX[eIdx][0] + cellPressure[eIdx];
totalStressX[eIdx][1] = effStressX[eIdx][1];
totalStressX[eIdx][2] = effStressX[eIdx][2];
if (dim >= 2) {
totalStressY[eIdx][0] = effStressY[eIdx][0];
totalStressY[eIdx][1] = effStressY[eIdx][1] + cellPressure[eIdx];
totalStressY[eIdx][2] = effStressY[eIdx][2];
}
if (dim >= 3) {
totalStressZ[eIdx][0] = effStressZ[eIdx][0];
totalStressZ[eIdx][1] = effStressZ[eIdx][1];
totalStressZ[eIdx][2] = effStressZ[eIdx][2] + cellPressure[eIdx];
}
}
else{
totalStressX[eIdx][0] = effStressX[eIdx][0] - cellPressure[eIdx];
totalStressX[eIdx][1] = effStressX[eIdx][1];
totalStressX[eIdx][2] = effStressX[eIdx][2];
if (dim >= 2) {
totalStressY[eIdx][0] = effStressY[eIdx][0];
totalStressY[eIdx][1] = effStressY[eIdx][1] - cellPressure[eIdx];
totalStressY[eIdx][2] = effStressY[eIdx][2];
}
if (dim >= 3) {
totalStressZ[eIdx][0] = effStressZ[eIdx][0];
totalStressZ[eIdx][1] = effStressZ[eIdx][1];
totalStressZ[eIdx][2] = effStressZ[eIdx][2] - cellPressure[eIdx];
}
}
}
// calculate principal stresses i.e. the eigenvalues of the total stress tensor
......
......@@ -284,6 +284,8 @@ public:
for (unsigned int eIdx = 0; eIdx < numElements; ++eIdx) {
if(eIt->partitionType() == Dune::InteriorEntity)
{
deltaEffStressX[eIdx] = Scalar(0.0);
if (dim >= 2)
deltaEffStressY[eIdx] = Scalar(0.0);
......@@ -630,7 +632,7 @@ public:
// Pressure margins according to J. Rutqvist et al. / International Journal of Rock Mecahnics & Mining Sciences 45 (2008), 132-143
Pcrtens[eIdx] = Peff - principalStress3[eIdx];
Pcrshe[eIdx] = Peff - Psc;
}
}
writer.attachVertexData(Te, "T");
......
......@@ -124,6 +124,8 @@ public:
ElementIterator eEndIt = this->gridView_().template end<0>();
for (; eIt != eEndIt; ++eIt)
{
if(eIt->partitionType() == Dune::InteriorEntity)
{
int eIdx = this->problem_().model().elementMapper().map(*eIt);
rank[eIdx] = this->gridView_().comm().rank();
......@@ -184,6 +186,7 @@ public:
sigmaz[eIdx] += stress[2];
}
}
}
}
......
......@@ -105,32 +105,35 @@ public:
ElementIterator eEndIt = this->gridView_().template end<0>();
for (; eIt != eEndIt; ++eIt)
{
int eIdx = this->problem_().model().elementMapper().map(*eIt);
(*rank)[eIdx] = this->gridView_().comm().rank();
if(eIt->partitionType() == Dune::InteriorEntity)
{
int eIdx = this->problem_().model().elementMapper().map(*eIt);
(*rank)[eIdx] = this->gridView_().comm().rank();
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
const SpatialParams &spatialParams = this->problem_().spatialParams();
const SpatialParams &spatialParams = this->problem_().spatialParams();
(*p)[globalIdx] = elemVolVars[scvIdx].pressure();
(*K)[globalIdx] = spatialParams.intrinsicPermeability(*eIt,
fvGeometry,
scvIdx);
}
(*p)[globalIdx] = elemVolVars[scvIdx].pressure();
(*K)[globalIdx] = spatialParams.intrinsicPermeability(*eIt,
fvGeometry,
scvIdx);
}
// velocity output
velocityOutput.calculateVelocity(*velocity, elemVolVars, fvGeometry, *eIt, /*phaseIdx=*/0);
// velocity output
velocityOutput.calculateVelocity(*velocity, elemVolVars, fvGeometry, *eIt, /*phaseIdx=*/0);
}
}
writer.attachDofData(*p, "p", isBox);
......
......@@ -135,34 +135,37 @@ public:
ElementIterator eEndIt = this->gridView_().template end<0>();
for (; eIt != eEndIt; ++eIt)
{
int eIdx = this->problem_().model().elementMapper().map(*eIt);
rank[eIdx] = this->gridView_().comm().rank();
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
if(eIt->partitionType() == Dune::InteriorEntity)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
pressure[globalIdx] = elemVolVars[scvIdx].pressure();
delp[globalIdx] = elemVolVars[scvIdx].pressure() - 1e5;
moleFraction0[globalIdx] = elemVolVars[scvIdx].moleFraction(0);
moleFraction1[globalIdx] = elemVolVars[scvIdx].moleFraction(1);
massFraction0[globalIdx] = elemVolVars[scvIdx].massFraction(0);
massFraction1[globalIdx] = elemVolVars[scvIdx].massFraction(1);
rho[globalIdx] = elemVolVars[scvIdx].density();
mu[globalIdx] = elemVolVars[scvIdx].viscosity();
int eIdx = this->problem_().model().elementMapper().map(*eIt);
rank[eIdx] = this->gridView_().comm().rank();
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
pressure[globalIdx] = elemVolVars[scvIdx].pressure();
delp[globalIdx] = elemVolVars[scvIdx].pressure() - 1e5;
moleFraction0[globalIdx] = elemVolVars[scvIdx].moleFraction(0);
moleFraction1[globalIdx] = elemVolVars[scvIdx].moleFraction(1);
massFraction0[globalIdx] = elemVolVars[scvIdx].massFraction(0);
massFraction1[globalIdx] = elemVolVars[scvIdx].massFraction(1);
rho[globalIdx] = elemVolVars[scvIdx].density();
mu[globalIdx] = elemVolVars[scvIdx].viscosity();
}
// velocity output
velocityOutput.calculateVelocity(*velocity, elemVolVars, fvGeometry, *eIt, phaseIdx);
}
// velocity output
velocityOutput.calculateVelocity(*velocity, elemVolVars, fvGeometry, *eIt, phaseIdx);
}
writer.attachDofData(pressure, "P", isBox);
......
......@@ -144,38 +144,41 @@ public:
ElementIterator eEndIt = this->gridView_().template end<0>();
for (; eIt != eEndIt; ++eIt)
{
int eIdx = this->elementMapper().map(*eIt);
(*rank)[eIdx] = this->gridView_().comm().rank();
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
if(eIt->partitionType() == Dune::InteriorEntity)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
(*pw)[globalIdx] = elemVolVars[scvIdx].pressure(wPhaseIdx);
(*pn)[globalIdx] = elemVolVars[scvIdx].pressure(nPhaseIdx);
(*pc)[globalIdx] = elemVolVars[scvIdx].capillaryPressure();
(*sw)[globalIdx] = elemVolVars[scvIdx].saturation(wPhaseIdx);
(*sn)[globalIdx] = elemVolVars[scvIdx].saturation(nPhaseIdx);
(*rhoW)[globalIdx] = elemVolVars[scvIdx].density(wPhaseIdx);
(*rhoN)[globalIdx] = elemVolVars[scvIdx].density(nPhaseIdx);
(*mobW)[globalIdx] = elemVolVars[scvIdx].mobility(wPhaseIdx);
(*mobN)[globalIdx] = elemVolVars[scvIdx].mobility(nPhaseIdx);
(*poro)[globalIdx] = elemVolVars[scvIdx].porosity();
(*Te)[globalIdx] = elemVolVars[scvIdx].temperature();
int eIdx = this->elementMapper().map(*eIt);
(*rank)[eIdx] = this->gridView_().comm().rank();
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
(*pw)[globalIdx] = elemVolVars[scvIdx].pressure(wPhaseIdx);
(*pn)[globalIdx] = elemVolVars[scvIdx].pressure(nPhaseIdx);
(*pc)[globalIdx] = elemVolVars[scvIdx].capillaryPressure();
(*sw)[globalIdx] = elemVolVars[scvIdx].saturation(wPhaseIdx);
(*sn)[globalIdx] = elemVolVars[scvIdx].saturation(nPhaseIdx);
(*rhoW)[globalIdx] = elemVolVars[scvIdx].density(wPhaseIdx);
(*rhoN)[globalIdx] = elemVolVars[scvIdx].density(nPhaseIdx);
(*mobW)[globalIdx] = elemVolVars[scvIdx].mobility(wPhaseIdx);
(*mobN)[globalIdx] = elemVolVars[scvIdx].mobility(nPhaseIdx);
(*poro)[globalIdx] = elemVolVars[scvIdx].porosity();
(*Te)[globalIdx] = elemVolVars[scvIdx].temperature();
}
// velocity output
velocityOutput.calculateVelocity(*velocityW, elemVolVars, fvGeometry, *eIt, wPhaseIdx);
velocityOutput.calculateVelocity(*velocityN, elemVolVars, fvGeometry, *eIt, nPhaseIdx);
}
// velocity output
velocityOutput.calculateVelocity(*velocityW, elemVolVars, fvGeometry, *eIt, wPhaseIdx);
velocityOutput.calculateVelocity(*velocityN, elemVolVars, fvGeometry, *eIt, nPhaseIdx);
}
writer.attachDofData(*sn, "Sn", isBox);
......
......@@ -333,57 +333,60 @@ public:
ElementIterator eEndIt = this->gridView_().template end<0>();
for (; eIt != eEndIt; ++eIt)
{
int eIdx = this->elementMapper().map(*eIt);
(*rank)[eIdx] = this->gridView_().comm().rank();
if(eIt->partitionType() == Dune::InteriorEntity)
{
int eIdx = this->elementMapper().map(*eIt);
(*rank)[eIdx] = this->gridView_().comm().rank();
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
FVElementGeometry fvGeometry;
fvGeometry.update(this->gridView_(), *eIt);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
ElementVolumeVariables elemVolVars;
elemVolVars.update(this->problem_(),
*eIt,
fvGeometry,
false /* oldSol? */);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
(*sN)[globalIdx] = elemVolVars[scvIdx].saturation(nPhaseIdx);
(*sW)[globalIdx] = elemVolVars[scvIdx].saturation(wPhaseIdx);
(*pn)[globalIdx] = elemVolVars[scvIdx].pressure(nPhaseIdx);
(*pw)[globalIdx] = elemVolVars[scvIdx].pressure(wPhaseIdx);
(*pc)[globalIdx] = elemVolVars[scvIdx].capillaryPressure();
(*rhoW)[globalIdx] = elemVolVars[scvIdx].density(wPhaseIdx);
(*rhoN)[globalIdx] = elemVolVars[scvIdx].density(nPhaseIdx);
(*mobW)[globalIdx] = elemVolVars[scvIdx].mobility(wPhaseIdx);
(*mobN)[globalIdx] = elemVolVars[scvIdx].mobility(nPhaseIdx);
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
{
(*massFrac[phaseIdx][compIdx])[globalIdx]
= elemVolVars[scvIdx].massFraction(phaseIdx, compIdx);
for (int scvIdx = 0; scvIdx < fvGeometry.numScv; ++scvIdx)
{
int globalIdx = this->dofMapper().map(*eIt, scvIdx, dofCodim);
(*sN)[globalIdx] = elemVolVars[scvIdx].saturation(nPhaseIdx);
(*sW)[globalIdx] = elemVolVars[scvIdx].saturation(wPhaseIdx);
(*pn)[globalIdx] = elemVolVars[scvIdx].pressure(nPhaseIdx);
(*pw)[globalIdx] = elemVolVars[scvIdx].pressure(wPhaseIdx);
(*pc)[globalIdx] = elemVolVars[scvIdx].capillaryPressure();
(*rhoW)[globalIdx] = elemVolVars[scvIdx].density(wPhaseIdx);
(*rhoN)[globalIdx] = elemVolVars[scvIdx].density(nPhaseIdx);
(*mobW)[globalIdx] = elemVolVars[scvIdx].mobility(wPhaseIdx);
(*mobN)[globalIdx] = elemVolVars[scvIdx].mobility(nPhaseIdx);
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
{
(*massFrac[phaseIdx][compIdx])[globalIdx]
= elemVolVars[scvIdx].massFraction(phaseIdx, compIdx);
Valgrind::CheckDefined((*massFrac[phaseIdx][compIdx])[globalIdx][0]);
}
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
{
(*moleFrac[phaseIdx][compIdx])[globalIdx]
= elemVolVars[scvIdx].moleFraction(phaseIdx, compIdx);
Valgrind::CheckDefined((*moleFrac[phaseIdx][compIdx])[globalIdx][0]);
}
(*poro)[globalIdx] = elemVolVars[scvIdx].porosity();
(*temperature)[globalIdx] = elemVolVars[scvIdx].temperature();
(*phasePresence)[globalIdx]
= staticDat_[globalIdx].phasePresence;
}
Valgrind::CheckDefined((*massFrac[phaseIdx][compIdx])[globalIdx][0]);
}
for (int phaseIdx = 0; phaseIdx < numPhases; ++phaseIdx)
for (int compIdx = 0; compIdx < numComponents; ++compIdx)
{
(*moleFrac[phaseIdx][compIdx])[globalIdx]
= elemVolVars[scvIdx].moleFraction(phaseIdx, compIdx);
Valgrind::CheckDefined((*moleFrac[phaseIdx][compIdx])[globalIdx][0]);
}
(*poro)[globalIdx] = elemVolVars[scvIdx].porosity();
(*temperature)[globalIdx] = elemVolVars[scvIdx].temperature();
(*phasePresence)[globalIdx]
= staticDat_[globalIdx].phasePresence;
// velocity output
velocityOutput.calculateVelocity(*velocityW, elemVolVars, fvGeometry, *eIt, wPhaseIdx);
velocityOutput.calculateVelocity(*velocityN, elemVolVars, fvGeometry, *eIt, nPhaseIdx);
}
// velocity output
velocityOutput.calculateVelocity(*velocityW, elemVolVars, fvGeometry, *eIt, wPhaseIdx);
velocityOutput.calculateVelocity(*velocityN, elemVolVars, fvGeometry, *eIt, nPhaseIdx);