diff --git a/dumux/implicit/1p/1pmodel.hh b/dumux/implicit/1p/1pmodel.hh index 2c02cd2633bf95cd402631344e922fd49058c9b6..9e39844e4506477544551d0fd6239011fb1de19e 100644 --- a/dumux/implicit/1p/1pmodel.hh +++ b/dumux/implicit/1p/1pmodel.hh @@ -65,6 +65,7 @@ class OnePModel : public GET_PROP_TYPE(TypeTag, BaseModel) typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; typedef typename GridView::template Codim<0>::Iterator ElementIterator; enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; enum { dofCodim = isBox ? dim : 0 }; @@ -81,13 +82,13 @@ public: MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // create the required scalar fields unsigned numDofs = this->numDofs(); ScalarField *p = writer.allocateManagedBuffer(numDofs); ScalarField *K = writer.allocateManagedBuffer(numDofs); - VectorField *velocity = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocity = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) diff --git a/dumux/implicit/1p2c/1p2cmodel.hh b/dumux/implicit/1p2c/1p2cmodel.hh index 9d789053fcded0d4936b9dfb77bbe270883c382b..eb576c4fa73da0dec1494f38022b28b3cdef1448 100644 --- a/dumux/implicit/1p2c/1p2cmodel.hh +++ b/dumux/implicit/1p2c/1p2cmodel.hh @@ -81,9 +81,8 @@ class OnePTwoCModel : public GET_PROP_TYPE(TypeTag, BaseModel) typedef typename GET_PROP_TYPE(TypeTag, SolutionVector) SolutionVector; typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; - enum { - dim = GridView::dimension - }; + enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; typedef typename GridView::template Codim<0>::Iterator ElementIterator; typedef typename GET_PROP_TYPE(TypeTag, Indices) Indices; @@ -106,7 +105,7 @@ public: MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // create the required scalar fields unsigned numDofs = this->numDofs(); @@ -118,7 +117,7 @@ public: ScalarField &massFraction1 = *writer.allocateManagedBuffer(numDofs); ScalarField &rho = *writer.allocateManagedBuffer(numDofs); ScalarField &mu = *writer.allocateManagedBuffer(numDofs); - VectorField *velocity = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocity = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) diff --git a/dumux/implicit/2p/2pmodel.hh b/dumux/implicit/2p/2pmodel.hh index ac902213f728916de9900a74599c606cb06ac37c..024f4c4ef5652460609fc6be194c3635d987efc3 100644 --- a/dumux/implicit/2p/2pmodel.hh +++ b/dumux/implicit/2p/2pmodel.hh @@ -85,9 +85,8 @@ class TwoPModel : public GET_PROP_TYPE(TypeTag, BaseModel) typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; typedef typename GridView::template Codim<0>::Iterator ElementIterator; - enum { - dim = GridView::dimension - }; + enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar; @@ -108,7 +107,7 @@ public: MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // get the number of degrees of freedom unsigned numDofs = this->numDofs(); @@ -125,8 +124,8 @@ public: ScalarField *mobN = writer.allocateManagedBuffer(numDofs); ScalarField *poro = writer.allocateManagedBuffer(numDofs); ScalarField *Te = writer.allocateManagedBuffer(numDofs); - VectorField *velocityN = writer.template allocateManagedBuffer<double, dim>(numDofs); - VectorField *velocityW = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocityN = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); + VectorField *velocityW = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) // check if velocity output is demanded diff --git a/dumux/implicit/2p2c/2p2cmodel.hh b/dumux/implicit/2p2c/2p2cmodel.hh index 71f8e11a31c33a4028598231dead29b8baca8632..d4c6b89f54882e9f38a6d7c2ca1748d6085ceb55 100644 --- a/dumux/implicit/2p2c/2p2cmodel.hh +++ b/dumux/implicit/2p2c/2p2cmodel.hh @@ -296,7 +296,7 @@ public: MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // get the number of degrees of freedom unsigned numDofs = this->numDofs(); @@ -322,8 +322,8 @@ public: moleFrac[phaseIdx][compIdx] = writer.allocateManagedBuffer(numDofs); ScalarField *temperature = writer.allocateManagedBuffer(numDofs); ScalarField *poro = writer.allocateManagedBuffer(numDofs); - VectorField *velocityN = writer.template allocateManagedBuffer<double, dim>(numDofs); - VectorField *velocityW = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocityN = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); + VectorField *velocityW = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) // check if velocity output is demanded diff --git a/dumux/implicit/3p/3pmodel.hh b/dumux/implicit/3p/3pmodel.hh index 574c61d6ec6108789a435e743f60f42e2e9aacfa..fd153d4bff2ac4a22db4d9f9fe85579b975a00b9 100644 --- a/dumux/implicit/3p/3pmodel.hh +++ b/dumux/implicit/3p/3pmodel.hh @@ -72,6 +72,7 @@ class ThreePModel: public GET_PROP_TYPE(TypeTag, BaseModel) enum { dim = GridView::dimension, + dimWorld = GridView::dimensionworld, numPhases = GET_PROP_VALUE(TypeTag, NumPhases), @@ -100,7 +101,7 @@ public: MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // get the number of degrees of freedom unsigned numDofs = this->numDofs(); @@ -119,9 +120,9 @@ public: ScalarField *temperature = writer.allocateManagedBuffer (numDofs); ScalarField *poro = writer.allocateManagedBuffer(numDofs); ScalarField *perm = writer.allocateManagedBuffer(numDofs); - VectorField *velocityN = writer.template allocateManagedBuffer<double, dim>(numDofs); - VectorField *velocityW = writer.template allocateManagedBuffer<double, dim>(numDofs); - VectorField *velocityG = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocityN = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); + VectorField *velocityW = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); + VectorField *velocityG = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) // check if velocity output is demanded diff --git a/dumux/implicit/3p3c/3p3cmodel.hh b/dumux/implicit/3p3c/3p3cmodel.hh index e39d0d09ed8398abf0e0b95a1b868f1eba49f8f9..87bbef18cb9fc890f2f4875eb6a25fd056cb0b9b 100644 --- a/dumux/implicit/3p3c/3p3cmodel.hh +++ b/dumux/implicit/3p3c/3p3cmodel.hh @@ -297,7 +297,7 @@ public: MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // get the number of degrees of freedom unsigned numDofs = this->numDofs(); @@ -320,9 +320,9 @@ public: moleFraction[i][j] = writer.allocateManagedBuffer (numDofs); ScalarField *temperature = writer.allocateManagedBuffer (numDofs); ScalarField *poro = writer.allocateManagedBuffer(numDofs); - VectorField *velocityN = writer.template allocateManagedBuffer<double, dim>(numDofs); - VectorField *velocityW = writer.template allocateManagedBuffer<double, dim>(numDofs); - VectorField *velocityG = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocityN = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); + VectorField *velocityW = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); + VectorField *velocityG = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) // check if velocity output is demanded diff --git a/dumux/implicit/box/boxfvelementgeometry.hh b/dumux/implicit/box/boxfvelementgeometry.hh index 1bd6fe57295bb007c131b6eeebdc335ba474fcb2..5ec152bed2bdeb71dbfaadea92eed641ab9e17db 100644 --- a/dumux/implicit/box/boxfvelementgeometry.hh +++ b/dumux/implicit/box/boxfvelementgeometry.hh @@ -92,10 +92,18 @@ public: eg.subContVol[2].volume = eg.elementVolume/3; break; case 4: // 2D, quadrilinear - eg.subContVol[0].volume = eg.quadrilateralArea(eg.subContVol[0].global, edgeCoord[2], eg.elementGlobal, edgeCoord[0]); - eg.subContVol[1].volume = eg.quadrilateralArea(eg.subContVol[1].global, edgeCoord[1], eg.elementGlobal, edgeCoord[2]); - eg.subContVol[2].volume = eg.quadrilateralArea(eg.subContVol[2].global, edgeCoord[0], eg.elementGlobal, edgeCoord[3]); - eg.subContVol[3].volume = eg.quadrilateralArea(eg.subContVol[3].global, edgeCoord[3], eg.elementGlobal, edgeCoord[1]); + if (GlobalPosition::dimension == dim) { + eg.subContVol[0].volume = eg.quadrilateralArea(eg.subContVol[0].global, edgeCoord[2], eg.elementGlobal, edgeCoord[0]); + eg.subContVol[1].volume = eg.quadrilateralArea(eg.subContVol[1].global, edgeCoord[1], eg.elementGlobal, edgeCoord[2]); + eg.subContVol[2].volume = eg.quadrilateralArea(eg.subContVol[2].global, edgeCoord[0], eg.elementGlobal, edgeCoord[3]); + eg.subContVol[3].volume = eg.quadrilateralArea(eg.subContVol[3].global, edgeCoord[3], eg.elementGlobal, edgeCoord[1]); + } + else { + eg.subContVol[0].volume = eg.quadrilateralArea3D(eg.subContVol[0].global, edgeCoord[2], eg.elementGlobal, edgeCoord[0]); + eg.subContVol[1].volume = eg.quadrilateralArea3D(eg.subContVol[1].global, edgeCoord[1], eg.elementGlobal, edgeCoord[2]); + eg.subContVol[2].volume = eg.quadrilateralArea3D(eg.subContVol[2].global, edgeCoord[0], eg.elementGlobal, edgeCoord[3]); + eg.subContVol[3].volume = eg.quadrilateralArea3D(eg.subContVol[3].global, edgeCoord[3], eg.elementGlobal, edgeCoord[1]); + } break; default: DUNE_THROW(Dune::NotImplemented, "_BoxFVElemGeomHelper::fillSubContVolData dim = " << dim << ", numVertices = " << numVertices); @@ -655,17 +663,17 @@ public: // the compiler can optimize away all if // cases which don't apply. LocalPosition ipLocal; - GlobalPosition diffVec; if (dim==1) { - subContVolFace[k].ipLocal = 0.5; - subContVolFace[k].normal = 1.0; - ipLocal = subContVolFace[k].ipLocal; + ipLocal = 0.5; + subContVolFace[k].ipLocal = ipLocal; + subContVolFace[k].normal = subContVol[j].global - subContVol[i].global; + subContVolFace[k].normal /= subContVolFace[k].normal.two_norm(); } else if (dim==2) { ipLocal = referenceElement.position(k, dim-1) + elementLocal; ipLocal *= 0.5; subContVolFace[k].ipLocal = ipLocal; - diffVec = elementGlobal - edgeCoordinates[k]; + GlobalPosition diffVec = elementGlobal - edgeCoordinates[k]; subContVolFace[k].normal[0] = diffVec[1]; subContVolFace[k].normal[1] = -diffVec[0]; diff --git a/dumux/implicit/common/implicitproblem.hh b/dumux/implicit/common/implicitproblem.hh index b63f5128589db560a55b0ab736236ad1ffd8fbcf..31bc65bc0bf0b1f752470d8f3c23833dba1e45f9 100644 --- a/dumux/implicit/common/implicitproblem.hh +++ b/dumux/implicit/common/implicitproblem.hh @@ -103,7 +103,7 @@ public: VertexIterator vIt = gridView.template begin<dim>(); const VertexIterator vEndIt = gridView.template end<dim>(); for (; vIt!=vEndIt; ++vIt) { - for (int i=0; i<dim; i++) { + for (int i=0; i<dimWorld; i++) { bBoxMin_[i] = std::min(bBoxMin_[i], vIt->geometry().corner(0)[i]); bBoxMax_[i] = std::max(bBoxMax_[i], vIt->geometry().corner(0)[i]); } @@ -111,7 +111,7 @@ public: // communicate to get the bounding box of the whole domain if (gridView.comm().size() > 1) - for (int i = 0; i < dim; ++i) { + for (int i = 0; i < dimWorld; ++i) { bBoxMin_[i] = gridView.comm().min(bBoxMin_[i]); bBoxMax_[i] = gridView.comm().max(bBoxMax_[i]); } diff --git a/dumux/implicit/common/implicitvelocityoutput.hh b/dumux/implicit/common/implicitvelocityoutput.hh index e991038dc694593156fd9c4b70c20009cdfa2442..df04d4277a16e4d1520b1b10597625aea3b3f74f 100644 --- a/dumux/implicit/common/implicitvelocityoutput.hh +++ b/dumux/implicit/common/implicitvelocityoutput.hh @@ -210,7 +210,7 @@ public: int vIdxGlobal = problem_.vertexMapper().map(element, scvIdx, dofCodim); #endif // calculate the subcontrolvolume velocity by the Piola transformation - Dune::FieldVector<CoordScalar, dim> scvVelocity(0); + Dune::FieldVector<CoordScalar, dimWorld> scvVelocity(0); jacobianT2.mtv(scvVelocities[scvIdx], scvVelocity); scvVelocity /= element.geometry().integrationElement(localPos)*cellNum_[vIdxGlobal]; diff --git a/dumux/implicit/mpnc/energy/mpncfluxvariablesenergykinetic.hh b/dumux/implicit/mpnc/energy/mpncfluxvariablesenergykinetic.hh index b6526d0a0e89de5e24deecc2b8b95a4f99481f98..7e6b35db98efa3903fa22b55a1cef8222318eb34 100644 --- a/dumux/implicit/mpnc/energy/mpncfluxvariablesenergykinetic.hh +++ b/dumux/implicit/mpnc/energy/mpncfluxvariablesenergykinetic.hh @@ -138,12 +138,13 @@ class MPNCFluxVariablesEnergy<TypeTag, /*enableEnergy=*/true, /*numEnergyEquatio typedef typename GridView::template Codim<0>::Entity Element; enum {dim = GridView::dimension}; + enum {dimWorld = GridView::dimensionworld}; enum {numEnergyEqs = Indices::numPrimaryEnergyVars}; enum {wPhaseIdx = FluidSystem::wPhaseIdx}; enum {nPhaseIdx = FluidSystem::nPhaseIdx}; - typedef Dune::FieldVector<CoordScalar, dim> GlobalPosition; + typedef Dune::FieldVector<CoordScalar, dimWorld> GlobalPosition; typedef typename GET_PROP_TYPE(TypeTag, FVElementGeometry) FVElementGeometry; typedef typename FVElementGeometry::SubControlVolume SCV; typedef typename FVElementGeometry::SubControlVolumeFace SCVFace; diff --git a/dumux/implicit/mpnc/energy/mpncvtkwriterenergykinetic.hh b/dumux/implicit/mpnc/energy/mpncvtkwriterenergykinetic.hh index 866d61d08bb27599566b9f1a2deb0e57e2d300b4..f929f5430d18086d1ac051485a52155547761809 100644 --- a/dumux/implicit/mpnc/energy/mpncvtkwriterenergykinetic.hh +++ b/dumux/implicit/mpnc/energy/mpncvtkwriterenergykinetic.hh @@ -58,6 +58,7 @@ class MPNCVtkWriterEnergy<TypeTag, /*enableEnergy = */ true, /* numEnergyEquatio typedef typename GridView::template Codim<0>::Entity Element; enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) }; enum { numEnergyEqs = Indices::numPrimaryEnergyVars}; enum { velocityAveragingInModel = GET_PROP_VALUE(TypeTag, VelocityAveragingInModel) }; @@ -76,9 +77,9 @@ class MPNCVtkWriterEnergy<TypeTag, /*enableEnergy = */ true, /* numEnergyEquatio typedef typename ParentType::ComponentVector ComponentVector; typedef Dune::array<ScalarVector, numEnergyEqs> EnergyEqVector; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef Dune::BlockVector<DimVector> DimField; - typedef Dune::array<DimField, numPhases> PhaseDimField; + typedef Dune::FieldVector<Scalar, dimWorld> DimWorldVector; + typedef Dune::BlockVector<DimWorldVector> DimWorldField; + typedef Dune::array<DimWorldField, numPhases> PhaseDimWorldField; public: @@ -266,7 +267,7 @@ private: PhaseVector prandtlNumber_ ; PhaseVector nusseltNumber_ ; - PhaseDimField velocity_; + PhaseDimWorldField velocity_; ScalarVector awn_; ScalarVector aws_; @@ -300,6 +301,7 @@ class MPNCVtkWriterEnergy<TypeTag, /*enableEnergy = */ true, /* numEnergyEquatio typedef typename GridView::template Codim<0>::Entity Element; enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) }; enum { wPhaseIdx = FluidSystem::wPhaseIdx}; @@ -320,9 +322,9 @@ class MPNCVtkWriterEnergy<TypeTag, /*enableEnergy = */ true, /* numEnergyEquatio typedef typename ParentType::ComponentVector ComponentVector; typedef Dune::array<ScalarVector, numEnergyEqs> EnergyEqVector; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef Dune::BlockVector<DimVector> DimField; - typedef Dune::array<DimField, numPhases> PhaseDimField; + typedef Dune::FieldVector<Scalar, dimWorld> DimWorldVector; + typedef Dune::BlockVector<DimWorldVector> DimWorldField; + typedef Dune::array<DimWorldField, numPhases> PhaseDimWorldField; public: @@ -508,7 +510,7 @@ private: PhaseVector nusseltNumber_ ; ScalarVector qBoil_ ; ScalarVector qsf_ ; - PhaseDimField velocity_; + PhaseDimWorldField velocity_; }; diff --git a/dumux/implicit/mpnc/mpncvtkwritercommon.hh b/dumux/implicit/mpnc/mpncvtkwritercommon.hh index b51a9b402301fb2fbd4ad3837bd176f55e152517..898446bdfcbbfc6a7f26e377e27489a3c5608f48 100644 --- a/dumux/implicit/mpnc/mpncvtkwritercommon.hh +++ b/dumux/implicit/mpnc/mpncvtkwritercommon.hh @@ -56,13 +56,14 @@ class MPNCVtkWriterCommon : public MPNCVtkWriterModule<TypeTag> typedef typename ParentType::PhaseComponentMatrix PhaseComponentMatrix; enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; enum { numPhases = GET_PROP_VALUE(TypeTag, NumPhases) }; enum { numComponents = GET_PROP_VALUE(TypeTag, NumComponents) }; enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) }; - typedef Dune::FieldVector<Scalar, dim> DimVector; - typedef Dune::BlockVector<DimVector> DimField; - typedef Dune::array<DimField, numPhases> PhaseDimField; + typedef Dune::FieldVector<Scalar, dimWorld> DimWorldVector; + typedef Dune::BlockVector<DimWorldVector> DimWorldField; + typedef Dune::array<DimWorldField, numPhases> PhaseDimWorldField; enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; enum { dofCodim = isBox ? dim : 0 }; @@ -239,7 +240,7 @@ private: PhaseVector mobility_; PhaseVector averageMolarMass_; - PhaseDimField velocity_; + PhaseDimWorldField velocity_; ScalarVector porosity_; ScalarVector permeability_; diff --git a/dumux/implicit/richards/richardsmodel.hh b/dumux/implicit/richards/richardsmodel.hh index 7550b292d3a476fd3df460141cde9d2a169d79d7..2f4ed78b235cb6405d9be7d49530a00d941b5234 100644 --- a/dumux/implicit/richards/richardsmodel.hh +++ b/dumux/implicit/richards/richardsmodel.hh @@ -121,6 +121,7 @@ class RichardsModel : public GET_PROP_TYPE(TypeTag, BaseModel) typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView; typedef typename GridView::template Codim<0>::Iterator ElementIterator; enum { dim = GridView::dimension }; + enum { dimWorld = GridView::dimensionworld }; enum { isBox = GET_PROP_VALUE(TypeTag, ImplicitIsBox) }; enum { dofCodim = isBox ? dim : 0 }; @@ -137,7 +138,7 @@ public: void addOutputVtkFields(const SolutionVector &sol, MultiWriter &writer) { typedef Dune::BlockVector<Dune::FieldVector<double, 1> > ScalarField; - typedef Dune::BlockVector<Dune::FieldVector<double, dim> > VectorField; + typedef Dune::BlockVector<Dune::FieldVector<double, dimWorld> > VectorField; // get the number of degrees of freedom unsigned numDofs = this->numDofs(); @@ -154,7 +155,7 @@ public: ScalarField *mobN = writer.allocateManagedBuffer(numDofs); ScalarField *poro = writer.allocateManagedBuffer(numDofs); ScalarField *Te = writer.allocateManagedBuffer(numDofs); - VectorField *velocity = writer.template allocateManagedBuffer<double, dim>(numDofs); + VectorField *velocity = writer.template allocateManagedBuffer<double, dimWorld>(numDofs); ImplicitVelocityOutput<TypeTag> velocityOutput(this->problem_()); if (velocityOutput.enableOutput()) diff --git a/test/implicit/1p/1ptestproblem.hh b/test/implicit/1p/1ptestproblem.hh index 472bbeacc3a0eb58126abd74318229de7d8af5c8..68f356322437a2c98c9ae78ce4a1e2591e5b386b 100644 --- a/test/implicit/1p/1ptestproblem.hh +++ b/test/implicit/1p/1ptestproblem.hh @@ -87,6 +87,19 @@ NEW_TYPE_TAG(OnePTestCCProblemWithAMG, INHERITS_FROM(OnePTestCCProblem)); SET_TYPE_PROP(OnePTestBoxProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag> ); SET_TYPE_PROP(OnePTestCCProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag> ); +// if AlbertaGrid is available, test for dim < dimWorld +#if HAVE_ALBERTA +NEW_TYPE_TAG(OnePOneDThreeDTestProblem, INHERITS_FROM(OnePTestProblem)); +NEW_TYPE_TAG(OnePOneDThreeDTestBoxProblem, INHERITS_FROM(BoxModel, OnePOneDThreeDTestProblem)); +NEW_TYPE_TAG(OnePOneDThreeDTestCCProblem, INHERITS_FROM(CCModel, OnePOneDThreeDTestProblem)); +SET_TYPE_PROP(OnePOneDThreeDTestProblem, Grid, Dune::AlbertaGrid<1, 3>); + +NEW_TYPE_TAG(OnePTwoDThreeDTestProblem, INHERITS_FROM(OnePTestProblem)); +NEW_TYPE_TAG(OnePTwoDThreeDTestBoxProblem, INHERITS_FROM(BoxModel, OnePTwoDThreeDTestProblem)); +NEW_TYPE_TAG(OnePTwoDThreeDTestCCProblem, INHERITS_FROM(CCModel, OnePTwoDThreeDTestProblem)); +SET_TYPE_PROP(OnePTwoDThreeDTestProblem, Grid, Dune::AlbertaGrid<2, 3>); +#endif + // Enable gravity SET_BOOL_PROP(OnePTestProblem, ProblemEnableGravity, true); } @@ -206,7 +219,7 @@ public: const GlobalPosition &globalPos) const { double eps = 1.0e-3; - if (globalPos[dim-1] < eps || globalPos[dim-1] > this->bBoxMax()[dim-1] - eps) + if (globalPos[dimWorld-1] < eps || globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1] - eps) values.setAllDirichlet(); else values.setAllNeumann(); @@ -224,7 +237,7 @@ public: void dirichletAtPos(PrimaryVariables &values, const GlobalPosition &globalPos) const { - values[pressureIdx] = 1.0e+5*(2.0 - globalPos[dim-1]); + values[pressureIdx] = 1.0e+5*(2.0 - globalPos[dimWorld-1]); } /*! diff --git a/test/implicit/1p/1ptestspatialparams.hh b/test/implicit/1p/1ptestspatialparams.hh index 7072a345dfd6c2694ed11df3503b2892c7e3c64f..f61a3259b38dfee0ce2f991c045bb2abde69a807 100644 --- a/test/implicit/1p/1ptestspatialparams.hh +++ b/test/implicit/1p/1ptestspatialparams.hh @@ -61,15 +61,15 @@ public: try { lensLowerLeft_[0] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensLowerLeftX); - if (dim > 1) + if (dimWorld > 1) lensLowerLeft_[1] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensLowerLeftY); - if (dim > 2) + if (dimWorld > 2) lensLowerLeft_[2] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensLowerLeftZ); lensUpperRight_[0] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensUpperRightX); - if (dim > 1) + if (dimWorld > 1) lensUpperRight_[1] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensUpperRightY); - if (dim > 2) + if (dimWorld > 2) lensUpperRight_[2] = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.LensUpperRightZ); permeability_ = GET_RUNTIME_PARAM(TypeTag, Scalar, SpatialParams.Permeability); @@ -119,7 +119,7 @@ public: private: bool isInLens_(const GlobalPosition &globalPos) const { - for (int i = 0; i < dim; ++i) { + for (int i = 0; i < dimWorld; ++i) { if (globalPos[i] < lensLowerLeft_[i] || globalPos[i] > lensUpperRight_[i]) return false; } diff --git a/test/implicit/1p/CMakeLists.txt b/test/implicit/1p/CMakeLists.txt index 4f2572bcecd037011f29741e310c491a3ecae453..29802643a2b2b9baef30dfb00f97b4936c94769e 100644 --- a/test/implicit/1p/CMakeLists.txt +++ b/test/implicit/1p/CMakeLists.txt @@ -55,3 +55,37 @@ add_dumux_test(test_cc1pniconvection test_cc1pniconvection test_cc1pniconvection ${CMAKE_SOURCE_DIR}/test/references/1pniccconvection-reference.vtu ${CMAKE_CURRENT_BINARY_DIR}/cc1pniconvection-00011.vtu ${CMAKE_CURRENT_BINARY_DIR}/test_cc1pniconvection) + +# dim < dimWorld tests +add_dumux_test(test_box1p1d3d test_box1p1d3d test_box1p1d3d.cc + ${CMAKE_SOURCE_DIR}/bin/runTest.sh + ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py + ${CMAKE_SOURCE_DIR}/test/references/1ptestbox1d3d-reference.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox1d3d-00002.vtu + ${CMAKE_CURRENT_BINARY_DIR}/test_box1p1d3d) +add_dune_alberta_flags(test_box1p1d3d GRIDDIM 1 WORLDDIM 3) + +add_dumux_test(test_box1p2d3d test_box1p2d3d test_box1p2d3d.cc + ${CMAKE_SOURCE_DIR}/bin/runTest.sh + ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py + ${CMAKE_SOURCE_DIR}/test/references/1ptestbox2d3d-reference.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1ptestbox2d3d-00002.vtu + ${CMAKE_CURRENT_BINARY_DIR}/test_box1p2d3d) +add_dune_alberta_flags(test_box1p2d3d GRIDDIM 2 WORLDDIM 3) + +add_dumux_test(test_cc1p1d3d test_cc1p1d3d test_cc1p1d3d.cc + ${CMAKE_SOURCE_DIR}/bin/runTest.sh + ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py + ${CMAKE_SOURCE_DIR}/test/references/1ptestcc1d3d-reference.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc1d3d-00002.vtu + ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p1d3d) +add_dune_alberta_flags(test_cc1p1d3d GRIDDIM 1 WORLDDIM 3) + +add_dumux_test(test_cc1p2d3d test_cc1p2d3d test_cc1p2d3d.cc + ${CMAKE_SOURCE_DIR}/bin/runTest.sh + ${CMAKE_SOURCE_DIR}/bin/fuzzycomparevtu.py + ${CMAKE_SOURCE_DIR}/test/references/1ptestcc2d3d-reference.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1ptestcc2d3d-00002.vtu + ${CMAKE_CURRENT_BINARY_DIR}/test_cc1p2d3d) +add_dune_alberta_flags(test_cc1p2d3d GRIDDIM 2 WORLDDIM 3) + diff --git a/test/implicit/1p/Makefile.am b/test/implicit/1p/Makefile.am index 48b8129fceb93be6f4e1ec153008b68e1eecc50b..530c604f657c5abb95425d5380ad6eeb7a0aad0d 100644 --- a/test/implicit/1p/Makefile.am +++ b/test/implicit/1p/Makefile.am @@ -1,22 +1,47 @@ check_PROGRAMS = test_box1p \ + test_box1p1d3d \ + test_box1p2d3d \ test_box1pniconduction \ test_box1pniconvection \ test_box1pwithamg \ test_cc1p \ + test_cc1p1d3d \ + test_cc1p2d3d \ test_cc1pniconduction \ test_cc1pniconvection \ - test_cc1pwithamg + test_cc1pwithamg noinst_HEADERS := $(wildcard *.hh) EXTRA_DIST:=$(wildcard *.input) $(wildcard grids/*.dgf) CMakeLists.txt test_box1p_SOURCES = test_box1p.cc +test_box1p1d3d_SOURCES = test_box1p1d3d.cc +test_box1p2d3d_SOURCES = test_box1p2d3d.cc test_box1pniconduction_SOURCES = test_box1pniconduction.cc test_box1pniconvection_SOURCES = test_box1pniconvection.cc test_box1pwithamg_SOURCES = test_box1pwithamg.cc test_cc1p_SOURCES = test_cc1p.cc +test_cc1p1d3d_SOURCES = test_cc1p1d3d.cc +test_cc1p2d3d_SOURCES = test_cc1p2d3d.cc test_cc1pniconduction_SOURCES = test_cc1pniconduction.cc test_cc1pniconvection_SOURCES = test_cc1pniconvection.cc test_cc1pwithamg_SOURCES = test_cc1pwithamg.cc +test_cc1p1d3d_LDADD = $(AM_LDFLAGS) $(ALBERTA3D_LIBS) +test_cc1p1d3d_LDFLAGS= $(AM_LDFLAGS) $(ALBERTA3D_LDFLAGS) +test_cc1p1d3d_CPPFLAGS=$(AM_CPPFLAGS) $(ALBERTA3D_CPPFLAGS) + +test_box1p1d3d_LDADD = $(AM_LDFLAGS) $(ALBERTA3D_LIBS) +test_box1p1d3d_LDFLAGS= $(AM_LDFLAGS) $(ALBERTA3D_LDFLAGS) +test_box1p1d3d_CPPFLAGS=$(AM_CPPFLAGS) $(ALBERTA3D_CPPFLAGS) + +test_cc1p2d3d_LDADD = $(AM_LDFLAGS) $(ALBERTA3D_LIBS) +test_cc1p2d3d_LDFLAGS= $(AM_LDFLAGS) $(ALBERTA3D_LDFLAGS) +test_cc1p2d3d_CPPFLAGS=$(AM_CPPFLAGS) $(ALBERTA3D_CPPFLAGS) + +test_box1p2d3d_LDADD = $(AM_LDFLAGS) $(ALBERTA3D_LIBS) +test_box1p2d3d_LDFLAGS= $(AM_LDFLAGS) $(ALBERTA3D_LDFLAGS) +test_box1p2d3d_CPPFLAGS=$(AM_CPPFLAGS) $(ALBERTA3D_CPPFLAGS) + + include $(top_srcdir)/am/global-rules diff --git a/test/implicit/1p/grids/test_1p_1d3d.dgf b/test/implicit/1p/grids/test_1p_1d3d.dgf new file mode 100644 index 0000000000000000000000000000000000000000..99cdba09090bf0cfead98e2a1978d28e24596877 --- /dev/null +++ b/test/implicit/1p/grids/test_1p_1d3d.dgf @@ -0,0 +1,18 @@ +DGF +Vertex +0 0 0 +0.25 0.25 0.25 +0.5 0.5 0.5 +0.75 0.75 0.75 +1 1 1 +# +Simplex +0 1 +1 2 +2 3 +3 4 +# +Boundarydomain +default 1 % all boundaries have id 1 +# +# unitcube.dgf diff --git a/test/implicit/1p/grids/test_1p_2d3d.dgf b/test/implicit/1p/grids/test_1p_2d3d.dgf new file mode 100644 index 0000000000000000000000000000000000000000..1dfbbe4929a1f4e54361d713b82580110dcacd9c --- /dev/null +++ b/test/implicit/1p/grids/test_1p_2d3d.dgf @@ -0,0 +1,26 @@ +DGF +Vertex +0 0 0 +0.5 0 0 +1 0 0 +0 0.5 0.5 +0.5 0.5 0.5 +1 0.5 0.5 +0 1 1 +0.5 1 1 +1 1 1 +# +Simplex +0 1 4 +0 4 3 +1 2 4 +2 5 4 +3 4 6 +4 7 6 +4 5 8 +4 8 7 +# +Boundarydomain +default 1 % all boundaries have id 1 +# +# unitcube.dgf diff --git a/test/implicit/1p/test_box1p1d3d.cc b/test/implicit/1p/test_box1p1d3d.cc new file mode 100644 index 0000000000000000000000000000000000000000..79f3611b1f4b7a899ef1743ad85d107bf0c6eaea --- /dev/null +++ b/test/implicit/1p/test_box1p1d3d.cc @@ -0,0 +1,69 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief test for the one-phase CC model + */ +#include "config.h" +#include "1ptestproblem.hh" +#include <dumux/common/start.hh> + +/*! + * \brief Provides an interface for customizing error messages associated with + * reading in parameters. + * + * \param progName The name of the program, that was tried to be started. + * \param errorMsg The error message that was issued by the start function. + * Comprises the thing that went wrong and a general help message. + */ +void usage(const char *progName, const std::string &errorMsg) +{ + if (errorMsg.size() > 0) { + std::string errorMessageOut = "\nUsage: "; + errorMessageOut += progName; + errorMessageOut += " [options]\n"; + errorMessageOut += errorMsg; + errorMessageOut += "\n\nThe list of mandatory arguments for this program is:\n" + "\t-TimeManager.TEnd End of the simulation [s] \n" + "\t-TimeManager.DtInitial Initial timestep size [s] \n" + "\t-Grid.File Name of the file containing the grid \n" + "\t definition in DGF format\n" + "\t-SpatialParams.LensLowerLeftX x-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensLowerLeftY y-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightX x-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightY y-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.Permeability Permeability of the domain [m^2] \n" + "\t-SpatialParams.PermeabilityLens Permeability of the lens [m^2] \n"; + + std::cout << errorMessageOut + << "\n"; + } +} + +int main(int argc, char** argv) +{ +#if HAVE_ALBERTA + typedef TTAG(OnePOneDThreeDTestBoxProblem) ProblemTypeTag; + return Dumux::start<ProblemTypeTag>(argc, argv, usage); +#else + std::cout << "Test skipped, it needs Alberta!" << std::endl; + return 77; +#endif +} diff --git a/test/implicit/1p/test_box1p1d3d.input b/test/implicit/1p/test_box1p1d3d.input new file mode 100644 index 0000000000000000000000000000000000000000..7907d6434bb214068bd7bbcecc94b7fd86c7459e --- /dev/null +++ b/test/implicit/1p/test_box1p1d3d.input @@ -0,0 +1,21 @@ +[TimeManager] +DtInitial = 1 # [s] +TEnd = 1 # [s] + +[Grid] +File = ./grids/test_1p_1d3d.dgf + +[Problem] +Name = 1ptestbox1d3d # name passed to the output routines + +[SpatialParams] +LensLowerLeftX = 0.2 # [m] +LensLowerLeftY = 0.2 # [m] +LensLowerLeftZ = 0.2 # [m] +LensUpperRightX = 0.8 # [m] +LensUpperRightY = 0.8 # [m] +LensUpperRightZ = 0.8 # [m] + +Permeability = 1e-10 # [m^2] +PermeabilityLens = 1e-12 # [m^2] + diff --git a/test/implicit/1p/test_box1p2d3d.cc b/test/implicit/1p/test_box1p2d3d.cc new file mode 100644 index 0000000000000000000000000000000000000000..b66d95cfdf73149e1bfbc1211977cc2575f800cf --- /dev/null +++ b/test/implicit/1p/test_box1p2d3d.cc @@ -0,0 +1,69 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief test for the one-phase CC model + */ +#include "config.h" +#include "1ptestproblem.hh" +#include <dumux/common/start.hh> + +/*! + * \brief Provides an interface for customizing error messages associated with + * reading in parameters. + * + * \param progName The name of the program, that was tried to be started. + * \param errorMsg The error message that was issued by the start function. + * Comprises the thing that went wrong and a general help message. + */ +void usage(const char *progName, const std::string &errorMsg) +{ + if (errorMsg.size() > 0) { + std::string errorMessageOut = "\nUsage: "; + errorMessageOut += progName; + errorMessageOut += " [options]\n"; + errorMessageOut += errorMsg; + errorMessageOut += "\n\nThe list of mandatory arguments for this program is:\n" + "\t-TimeManager.TEnd End of the simulation [s] \n" + "\t-TimeManager.DtInitial Initial timestep size [s] \n" + "\t-Grid.File Name of the file containing the grid \n" + "\t definition in DGF format\n" + "\t-SpatialParams.LensLowerLeftX x-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensLowerLeftY y-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightX x-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightY y-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.Permeability Permeability of the domain [m^2] \n" + "\t-SpatialParams.PermeabilityLens Permeability of the lens [m^2] \n"; + + std::cout << errorMessageOut + << "\n"; + } +} + +int main(int argc, char** argv) +{ +#if HAVE_ALBERTA + typedef TTAG(OnePTwoDThreeDTestBoxProblem) ProblemTypeTag; + return Dumux::start<ProblemTypeTag>(argc, argv, usage); +#else + std::cout << "Test skipped, it needs Alberta!" << std::endl; + return 77; +#endif +} diff --git a/test/implicit/1p/test_box1p2d3d.input b/test/implicit/1p/test_box1p2d3d.input new file mode 100644 index 0000000000000000000000000000000000000000..b5081bd65ec48a131c749209af55e96c388494f5 --- /dev/null +++ b/test/implicit/1p/test_box1p2d3d.input @@ -0,0 +1,21 @@ +[TimeManager] +DtInitial = 1 # [s] +TEnd = 1 # [s] + +[Grid] +File = ./grids/test_1p_2d3d.dgf + +[Problem] +Name = 1ptestbox2d3d # name passed to the output routines + +[SpatialParams] +LensLowerLeftX = 0.2 # [m] +LensLowerLeftY = 0.2 # [m] +LensLowerLeftZ = 0.2 # [m] +LensUpperRightX = 0.8 # [m] +LensUpperRightY = 0.8 # [m] +LensUpperRightZ = 0.8 # [m] + +Permeability = 1e-10 # [m^2] +PermeabilityLens = 1e-12 # [m^2] + diff --git a/test/implicit/1p/test_cc1p1d3d.cc b/test/implicit/1p/test_cc1p1d3d.cc new file mode 100644 index 0000000000000000000000000000000000000000..6502e9f9d05fd479094e54e474d2e53bae14b5db --- /dev/null +++ b/test/implicit/1p/test_cc1p1d3d.cc @@ -0,0 +1,69 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief test for the one-phase CC model + */ +#include "config.h" +#include "1ptestproblem.hh" +#include <dumux/common/start.hh> + +/*! + * \brief Provides an interface for customizing error messages associated with + * reading in parameters. + * + * \param progName The name of the program, that was tried to be started. + * \param errorMsg The error message that was issued by the start function. + * Comprises the thing that went wrong and a general help message. + */ +void usage(const char *progName, const std::string &errorMsg) +{ + if (errorMsg.size() > 0) { + std::string errorMessageOut = "\nUsage: "; + errorMessageOut += progName; + errorMessageOut += " [options]\n"; + errorMessageOut += errorMsg; + errorMessageOut += "\n\nThe list of mandatory arguments for this program is:\n" + "\t-TimeManager.TEnd End of the simulation [s] \n" + "\t-TimeManager.DtInitial Initial timestep size [s] \n" + "\t-Grid.File Name of the file containing the grid \n" + "\t definition in DGF format\n" + "\t-SpatialParams.LensLowerLeftX x-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensLowerLeftY y-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightX x-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightY y-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.Permeability Permeability of the domain [m^2] \n" + "\t-SpatialParams.PermeabilityLens Permeability of the lens [m^2] \n"; + + std::cout << errorMessageOut + << "\n"; + } +} + +int main(int argc, char** argv) +{ +#if HAVE_ALBERTA + typedef TTAG(OnePOneDThreeDTestCCProblem) ProblemTypeTag; + return Dumux::start<ProblemTypeTag>(argc, argv, usage); +#else + std::cout << "Test skipped, it needs Alberta!" << std::endl; + return 77; +#endif +} diff --git a/test/implicit/1p/test_cc1p1d3d.input b/test/implicit/1p/test_cc1p1d3d.input new file mode 100644 index 0000000000000000000000000000000000000000..c2929273ac3abf772192ee8f8136a3c0db6c5e7e --- /dev/null +++ b/test/implicit/1p/test_cc1p1d3d.input @@ -0,0 +1,21 @@ +[TimeManager] +DtInitial = 1 # [s] +TEnd = 1 # [s] + +[Grid] +File = ./grids/test_1p_1d3d.dgf + +[Problem] +Name = 1ptestcc1d3d # name passed to the output routines + +[SpatialParams] +LensLowerLeftX = 0.2 # [m] +LensLowerLeftY = 0.2 # [m] +LensLowerLeftZ = 0.2 # [m] +LensUpperRightX = 0.8 # [m] +LensUpperRightY = 0.8 # [m] +LensUpperRightZ = 0.8 # [m] + +Permeability = 1e-10 # [m^2] +PermeabilityLens = 1e-12 # [m^2] + diff --git a/test/implicit/1p/test_cc1p2d3d.cc b/test/implicit/1p/test_cc1p2d3d.cc new file mode 100644 index 0000000000000000000000000000000000000000..9a3725b7e16d9ba1438850b5329af759629c943d --- /dev/null +++ b/test/implicit/1p/test_cc1p2d3d.cc @@ -0,0 +1,69 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief test for the one-phase CC model + */ +#include "config.h" +#include "1ptestproblem.hh" +#include <dumux/common/start.hh> + +/*! + * \brief Provides an interface for customizing error messages associated with + * reading in parameters. + * + * \param progName The name of the program, that was tried to be started. + * \param errorMsg The error message that was issued by the start function. + * Comprises the thing that went wrong and a general help message. + */ +void usage(const char *progName, const std::string &errorMsg) +{ + if (errorMsg.size() > 0) { + std::string errorMessageOut = "\nUsage: "; + errorMessageOut += progName; + errorMessageOut += " [options]\n"; + errorMessageOut += errorMsg; + errorMessageOut += "\n\nThe list of mandatory arguments for this program is:\n" + "\t-TimeManager.TEnd End of the simulation [s] \n" + "\t-TimeManager.DtInitial Initial timestep size [s] \n" + "\t-Grid.File Name of the file containing the grid \n" + "\t definition in DGF format\n" + "\t-SpatialParams.LensLowerLeftX x-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensLowerLeftY y-coordinate of the lower left corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightX x-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.LensUpperRightY y-coordinate of the upper right corner of the lens [m] \n" + "\t-SpatialParams.Permeability Permeability of the domain [m^2] \n" + "\t-SpatialParams.PermeabilityLens Permeability of the lens [m^2] \n"; + + std::cout << errorMessageOut + << "\n"; + } +} + +int main(int argc, char** argv) +{ +#if HAVE_ALBERTA + typedef TTAG(OnePTwoDThreeDTestCCProblem) ProblemTypeTag; + return Dumux::start<ProblemTypeTag>(argc, argv, usage); +#else + std::cout << "Test skipped, it needs Alberta!" << std::endl; + return 77; +#endif +} diff --git a/test/implicit/1p/test_cc1p2d3d.input b/test/implicit/1p/test_cc1p2d3d.input new file mode 100644 index 0000000000000000000000000000000000000000..639070c93adadaae343e6d39057a4e95df05bd2b --- /dev/null +++ b/test/implicit/1p/test_cc1p2d3d.input @@ -0,0 +1,21 @@ +[TimeManager] +DtInitial = 1 # [s] +TEnd = 1 # [s] + +[Grid] +File = ./grids/test_1p_2d3d.dgf + +[Problem] +Name = 1ptestcc2d3d # name passed to the output routines + +[SpatialParams] +LensLowerLeftX = 0.2 # [m] +LensLowerLeftY = 0.2 # [m] +LensLowerLeftZ = 0.2 # [m] +LensUpperRightX = 0.8 # [m] +LensUpperRightY = 0.8 # [m] +LensUpperRightZ = 0.8 # [m] + +Permeability = 1e-10 # [m^2] +PermeabilityLens = 1e-12 # [m^2] + diff --git a/test/implicit/2p/lensspatialparams.hh b/test/implicit/2p/lensspatialparams.hh index c8dc33db3c083ec1f372d6912aadaf47198b38b4..b57d99c867ec789b552ec98b103262d324767b3a 100644 --- a/test/implicit/2p/lensspatialparams.hh +++ b/test/implicit/2p/lensspatialparams.hh @@ -183,7 +183,7 @@ public: private: bool isInLens_(const GlobalPosition &globalPos) const { - for (int i = 0; i < dim; ++i) { + for (int i = 0; i < dimWorld; ++i) { if (globalPos[i] < lensLowerLeft_[i] || globalPos[i] > lensUpperRight_[i]) return false; } diff --git a/test/implicit/2p2c/injectionspatialparams.hh b/test/implicit/2p2c/injectionspatialparams.hh index e8220bfe40d93dca6888f7906704733d70a706ea..1a4c8da8317a68138e14f98d08c120d01551df26 100644 --- a/test/implicit/2p2c/injectionspatialparams.hh +++ b/test/implicit/2p2c/injectionspatialparams.hh @@ -228,7 +228,7 @@ public: private: bool isFineMaterial_(const GlobalPosition &globalPos) const - { return globalPos[dim-1] > layerBottom_; } + { return globalPos[dimWorld-1] > layerBottom_; } Scalar fineK_; Scalar coarseK_; diff --git a/test/implicit/2p2c/waterairspatialparams.hh b/test/implicit/2p2c/waterairspatialparams.hh index e091f5da52c44ae24fdc1f9c27180579071983a5..61d9c1b0d2b01bf265cd32657c7e87b58fbba733 100644 --- a/test/implicit/2p2c/waterairspatialparams.hh +++ b/test/implicit/2p2c/waterairspatialparams.hh @@ -222,7 +222,7 @@ public: private: bool isFineMaterial_(const GlobalPosition &globalPos) const - { return globalPos[dim-1] > layerBottom_; } + { return globalPos[dimWorld-1] > layerBottom_; } Scalar fineK_; Scalar coarseK_; diff --git a/test/implicit/co2/heterogeneousproblem.hh b/test/implicit/co2/heterogeneousproblem.hh index 3711137b91e162a6748c724d2ee568bb5ae92cf2..e816c7f38f953e628f6339c48f59ecbb30099234 100644 --- a/test/implicit/co2/heterogeneousproblem.hh +++ b/test/implicit/co2/heterogeneousproblem.hh @@ -483,7 +483,7 @@ private: Scalar temp = temperature_(globalPos); Scalar densityW = FluidSystem::Brine::liquidDensity(temp, 1e7); - Scalar pl = 1e5 - densityW*this->gravity()[dim-1]*(depthBOR_ - globalPos[dim-1]); + Scalar pl = 1e5 - densityW*this->gravity()[dimWorld-1]*(depthBOR_ - globalPos[dimWorld-1]); Scalar moleFracLiquidCO2 = 0.00; Scalar moleFracLiquidBrine = 1.0 - moleFracLiquidCO2; @@ -504,7 +504,7 @@ private: Scalar temperature_(const GlobalPosition globalPos) const { - Scalar T = 283.0 + (depthBOR_ - globalPos[dim-1])*0.03; + Scalar T = 283.0 + (depthBOR_ - globalPos[dimWorld-1])*0.03; return T; } diff --git a/test/implicit/co2ni/heterogeneousproblemni.hh b/test/implicit/co2ni/heterogeneousproblemni.hh index cc4c7af46def7e3e2f4766b74df207768dfd1eb9..548f2f647a3bb4c8024fdfcac6650b591258e2b0 100644 --- a/test/implicit/co2ni/heterogeneousproblemni.hh +++ b/test/implicit/co2ni/heterogeneousproblemni.hh @@ -507,7 +507,7 @@ private: Scalar temp = temperature_(globalPos); Scalar densityW = FluidSystem::Brine::liquidDensity(temp, 1e7); - Scalar pl = 1e5 - densityW*this->gravity()[dim-1]*(depthBOR_ - globalPos[dim-1]); + Scalar pl = 1e5 - densityW*this->gravity()[dimWorld-1]*(depthBOR_ - globalPos[dimWorld-1]); Scalar moleFracLiquidCO2 = 0.00; Scalar moleFracLiquidBrine = 1.0 - moleFracLiquidCO2; @@ -528,7 +528,7 @@ private: Scalar temperature_(const GlobalPosition globalPos) const { - Scalar T = 283.0 + (depthBOR_ - globalPos[dim-1])*0.03; + Scalar T = 283.0 + (depthBOR_ - globalPos[dimWorld-1])*0.03; return T; } diff --git a/test/implicit/mpnc/combustionproblem1c.hh b/test/implicit/mpnc/combustionproblem1c.hh index 396a371ba26f868145ef9df1de332c58f068f621..c738e9f47d1baa41b9781781c5a08c8c2bbcca5b 100644 --- a/test/implicit/mpnc/combustionproblem1c.hh +++ b/test/implicit/mpnc/combustionproblem1c.hh @@ -240,7 +240,7 @@ class CombustionProblemOneComponent: public ImplicitPorousMediaProblem<TypeTag> typedef std::vector<Dune::FieldVector<Scalar, 1> > ScalarBuffer; typedef std::array<ScalarBuffer, numPhases> PhaseBuffer; - typedef Dune::FieldVector<Scalar, dim> VelocityVector; + typedef Dune::FieldVector<Scalar, dimWorld> VelocityVector; typedef Dune::BlockVector<VelocityVector> VelocityField; typedef std::array<VelocityField, numPhases> PhaseVelocityField; @@ -745,13 +745,13 @@ private: * \brief Give back whether the tested position (input) is a specific region (down, (gravityDir)) in the domain */ bool onLowerBoundary_(const GlobalPosition & globalPos) const - { return globalPos[dim-1] < this->bBoxMin()[dim-1] + eps_;} + { return globalPos[dimWorld-1] < this->bBoxMin()[dimWorld-1] + eps_;} /*! * \brief Give back whether the tested position (input) is a specific region (up, (gravityDir)) in the domain */ bool onUpperBoundary_(const GlobalPosition & globalPos) const - { return globalPos[dim-1] > this->bBoxMax()[dim-1] - eps_;} + { return globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1] - eps_;} private: Scalar eps_; diff --git a/test/implicit/mpnc/evaporationatmosphereproblem.hh b/test/implicit/mpnc/evaporationatmosphereproblem.hh index 57fbc24e3299797e1736db67911428885419d0b3..cae13aa452572c4a14bc66bfacaf29820219a061 100644 --- a/test/implicit/mpnc/evaporationatmosphereproblem.hh +++ b/test/implicit/mpnc/evaporationatmosphereproblem.hh @@ -645,7 +645,7 @@ private: } else DUNE_THROW(Dune::InvalidStateException, - "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); for (int i = 0; i < numPhases - 1; ++i) priVars[S0Idx + i] = S[i]; @@ -682,7 +682,7 @@ private: p[wPhaseIdx] = pnInitial_ ; } else - DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); if(pressureFormulation == mostWettingFirst){ // This means that the pressures are sorted from the most wetting to the least wetting-1 in the primary variables vector. @@ -729,7 +729,7 @@ private: priVars[conti00EqIdx + offset] = dryFluidState.moleFraction(phaseIdx,compIdx) ; } else - DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } } } @@ -772,13 +772,13 @@ private: * \brief Give back whether the tested position (input) is a specific region (down, (gravityDir)) in the domain */ bool onLowerBoundary_(const GlobalPosition & globalPos) const - { return globalPos[dim-1] < this->bBoxMin()[dim-1] + eps_; } + { return globalPos[dimWorld-1] < this->bBoxMin()[dimWorld-1] + eps_; } /*! * \brief Give back whether the tested position (input) is a specific region (up, (gravityDir)) in the domain */ bool onUpperBoundary_(const GlobalPosition & globalPos) const - { return globalPos[dim-1] > this->bBoxMax()[dim-1] - eps_; } + { return globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1] - eps_; } private: Scalar eps_; diff --git a/test/implicit/mpnc/evaporationatmospherespatialparams.hh b/test/implicit/mpnc/evaporationatmospherespatialparams.hh index 8b704fdeaf37fdec61e1de511d00f6ab2f458221..66dd5b50210b93044e6ff3de11fe4cd52bcdcd7e 100644 --- a/test/implicit/mpnc/evaporationatmospherespatialparams.hh +++ b/test/implicit/mpnc/evaporationatmospherespatialparams.hh @@ -335,7 +335,7 @@ public: else if (inPM_(globalPos)) return intrinsicPermeabilityPM_ ; else - DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*! \brief Return the porosity \f$[-]\f$ of the soil @@ -358,7 +358,7 @@ public: else if (inPM_(globalPos)) return porosityPM_ ; else - DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*! @@ -389,7 +389,7 @@ public: return materialParamsFF_ ; else if (inPM_(globalPos)) return materialParamsPM_ ; - else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*!\brief Return a reference to the container object for the @@ -409,7 +409,7 @@ public: return aWettingNonWettingSurfaceParamsFreeFlow_ ; else if (inPM_(globalPos)) return aWettingNonWettingSurfaceParams_ ; - else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*!\brief Return a reference to the container object for the @@ -429,7 +429,7 @@ public: return aNonWettingSolidSurfaceParamsFreeFlow_ ; else if (inPM_(globalPos)) return aNonWettingSolidSurfaceParams_ ; - else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*!\brief Return the maximum capillary pressure for the given pc-Sw curve @@ -469,7 +469,7 @@ public: return characteristicLengthFF_ ; else if (inPM_(globalPos)) return characteristicLengthPM_ ; - else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*!\brief Return the pre factor the the energy transfer @@ -492,7 +492,7 @@ public: return factorEnergyTransfer_ ; else if (inPM_(globalPos)) return factorEnergyTransfer_ ; - else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } /*!\brief Return the pre factor for the mass transfer @@ -515,7 +515,7 @@ public: return factorMassTransfer_ ; else if (inPM_(globalPos)) return factorMassTransfer_ ; - else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dim-1]); + else DUNE_THROW(Dune::InvalidStateException, "You should not be here: x=" << globalPos[0] << " y= "<< globalPos[dimWorld-1]); } @@ -558,7 +558,7 @@ public: * -> be careful with neumannAtPos */ const bool inPM_(const GlobalPosition & globalPos) const - { return ( (globalPos[dim-1] > 0. - 1e-6) and (globalPos[dim-1] < (heightPM_ + 1e-6 ) ) ); } + { return ( (globalPos[dimWorld-1] > 0. - 1e-6) and (globalPos[dimWorld-1] < (heightPM_ + 1e-6 ) ) ); } /*! * \brief Give back whether the tested position (input) is a specific region (above PM / "free flow") in the domain @@ -572,7 +572,7 @@ public: * -> be careful with neumannAtPos */ const bool inFF_(const GlobalPosition & globalPos) const - { return ( (globalPos[dim-1] < heightDomain_ + 1e-6) and (globalPos[dim-1] > (heightPM_ + 1e-6) ) ); } + { return ( (globalPos[dimWorld-1] < heightDomain_ + 1e-6) and (globalPos[dimWorld-1] > (heightPM_ + 1e-6) ) ); } /*! * \brief Give back whether the tested position (input) is a specific region (above PM / "free flow") in the domain @@ -586,7 +586,7 @@ public: * -> be careful with neumannAtPos */ const bool inInjection_(const GlobalPosition & globalPos) const - { return ( (globalPos[dim-1] < heightDomain_ - 0.25*heightDomain_ + 1e-6) and (globalPos[dim-1] > (heightPM_ + 1e-6) ) ); } + { return ( (globalPos[dimWorld-1] < heightDomain_ - 0.25*heightDomain_ + 1e-6) and (globalPos[dimWorld-1] > (heightPM_ + 1e-6) ) ); } /*! \brief access function for the depth / height of the porous medium */ const Scalar heightPM() const diff --git a/test/implicit/mpnc/forchheimer1pproblem.hh b/test/implicit/mpnc/forchheimer1pproblem.hh index 138d29774934b072744ab1393bf44cd8612cdb31..04ba9a5f3b2be780f8aa77a060dff8d5bd3eb9ae 100644 --- a/test/implicit/mpnc/forchheimer1pproblem.hh +++ b/test/implicit/mpnc/forchheimer1pproblem.hh @@ -468,13 +468,13 @@ private: * \brief Give back whether the testes position (input) is a specific region (down, (gravityDir)) in the domain */ bool onLowerBoundary_(const GlobalPosition &globalPos) const - { return globalPos[dim-1] < this->bBoxMin()[dim-1] + eps_; } + { return globalPos[dimWorld-1] < this->bBoxMin()[dimWorld-1] + eps_; } /*! * \brief Give back whether the testes position (input) is a specific region (up, (gravityDir)) in the domain */ bool onUpperBoundary_(const GlobalPosition &globalPos) const - { return globalPos[dim-1] > this->bBoxMax()[dim-1] - eps_; } + { return globalPos[dimWorld-1] > this->bBoxMax()[dimWorld-1] - eps_; } Scalar temperature_; Scalar eps_; diff --git a/test/implicit/richards/richardslensspatialparams.hh b/test/implicit/richards/richardslensspatialparams.hh index 4fec0bcfe827697686c7039e7b78207def304b60..a62b9fb776ae141b87a73def1adead659e5e651a 100644 --- a/test/implicit/richards/richardslensspatialparams.hh +++ b/test/implicit/richards/richardslensspatialparams.hh @@ -193,7 +193,7 @@ public: private: bool isInLens_(const GlobalPosition &globalPos) const { - for (int i = 0; i < dim; ++i) { + for (int i = 0; i < dimWorld; ++i) { if (globalPos[i] < lensLowerLeft_[i] || globalPos[i] > lensUpperRight_[i]) return false; } diff --git a/test/references/1ptestbox1d3d-reference.vtp b/test/references/1ptestbox1d3d-reference.vtp new file mode 100644 index 0000000000000000000000000000000000000000..7864527d13d7c4151edf28c7e9e4d5289e0656c3 --- /dev/null +++ b/test/references/1ptestbox1d3d-reference.vtp @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<VTKFile type="PolyData" version="0.1" byte_order="LittleEndian"> + <PolyData> + <Piece NumberOfLines="4" NumberOfPoints="5"> + <PointData Scalars="p"> + <DataArray type="Float32" Name="p" NumberOfComponents="1" format="ascii"> + 200000 182416 150000 117584 100000 + </DataArray> + <DataArray type="Float32" Name="K" NumberOfComponents="1" format="ascii"> + 1e-10 1e-12 1e-12 1e-12 1e-10 + </DataArray> + </PointData> + <CellData Scalars="process rank"> + <DataArray type="Float32" Name="process rank" NumberOfComponents="1" format="ascii"> + 0 0 0 0 + </DataArray> + </CellData> + <Points> + <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii"> + 0 0 0 0.25 0.25 0.25 0.5 0.5 0.5 0.75 0.75 0.75 + 1 1 1 + </DataArray> + </Points> + <Lines> + <DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii"> + 0 1 1 2 2 3 3 4 + </DataArray> + <DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii"> + 2 4 6 8 + </DataArray> + </Lines> + </Piece> + </PolyData> +</VTKFile> diff --git a/test/references/1ptestbox2d3d-reference.vtu b/test/references/1ptestbox2d3d-reference.vtu new file mode 100644 index 0000000000000000000000000000000000000000..bf40f01a939537865327e5291629972d5327afba --- /dev/null +++ b/test/references/1ptestbox2d3d-reference.vtu @@ -0,0 +1,39 @@ +<?xml version="1.0"?> +<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian"> + <UnstructuredGrid> + <Piece NumberOfCells="8" NumberOfPoints="9"> + <PointData Scalars="p"> + <DataArray type="Float32" Name="p" NumberOfComponents="1" format="ascii"> + 200000 200000 150000 150000 200000 150000 100000 100000 100000 + </DataArray> + <DataArray type="Float32" Name="K" NumberOfComponents="1" format="ascii"> + 1e-10 1e-10 1e-12 1e-10 1e-10 1e-10 1e-10 1e-10 1e-10 + </DataArray> + </PointData> + <CellData Scalars="process rank"> + <DataArray type="Float32" Name="process rank" NumberOfComponents="1" format="ascii"> + 0 0 0 0 0 0 0 0 + </DataArray> + </CellData> + <Points> + <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii"> + 0 0 0 0.5 0 0 0.5 0.5 0.5 0 0.5 0.5 + 1 0 0 1 0.5 0.5 0 1 1 0.5 1 1 + 1 1 1 + </DataArray> + </Points> + <Cells> + <DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii"> + 0 1 2 0 2 3 1 4 2 4 5 2 + 3 2 6 2 7 6 2 5 8 2 8 7 + </DataArray> + <DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii"> + 3 6 9 12 15 18 21 24 + </DataArray> + <DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii"> + 5 5 5 5 5 5 5 5 + </DataArray> + </Cells> + </Piece> + </UnstructuredGrid> +</VTKFile> diff --git a/test/references/1ptestcc1d3d-reference.vtp b/test/references/1ptestcc1d3d-reference.vtp new file mode 100644 index 0000000000000000000000000000000000000000..b4cfb0c08e7a109b813ea8b0db23b6cd2bdf4307 --- /dev/null +++ b/test/references/1ptestcc1d3d-reference.vtp @@ -0,0 +1,32 @@ +<?xml version="1.0"?> +<VTKFile type="PolyData" version="0.1" byte_order="LittleEndian"> + <PolyData> + <Piece NumberOfLines="4" NumberOfPoints="5"> + <CellData Scalars="p"> + <DataArray type="Float32" Name="p" NumberOfComponents="1" format="ascii"> + 198550 173550 126449 101449 + </DataArray> + <DataArray type="Float32" Name="K" NumberOfComponents="1" format="ascii"> + 1e-10 1e-12 1e-12 1e-10 + </DataArray> + <DataArray type="Float32" Name="process rank" NumberOfComponents="1" format="ascii"> + 0 0 0 0 + </DataArray> + </CellData> + <Points> + <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii"> + 0 0 0 0.25 0.25 0.25 0.5 0.5 0.5 0.75 0.75 0.75 + 1 1 1 + </DataArray> + </Points> + <Lines> + <DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii"> + 0 1 1 2 2 3 3 4 + </DataArray> + <DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii"> + 2 4 6 8 + </DataArray> + </Lines> + </Piece> + </PolyData> +</VTKFile> diff --git a/test/references/1ptestcc2d3d-reference.vtu b/test/references/1ptestcc2d3d-reference.vtu new file mode 100644 index 0000000000000000000000000000000000000000..cd2f26c53c4d20faba5a5acac4c1e97bbc2cfb9f --- /dev/null +++ b/test/references/1ptestcc2d3d-reference.vtu @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian"> + <UnstructuredGrid> + <Piece NumberOfCells="8" NumberOfPoints="9"> + <CellData Scalars="p"> + <DataArray type="Float32" Name="p" NumberOfComponents="1" format="ascii"> + 180435 167391 180435 167391 132609 119565 132609 119565 + </DataArray> + <DataArray type="Float32" Name="K" NumberOfComponents="1" format="ascii"> + 1e-10 1e-10 1e-10 1e-10 1e-10 1e-10 1e-10 1e-10 + </DataArray> + <DataArray type="Float32" Name="process rank" NumberOfComponents="1" format="ascii"> + 0 0 0 0 0 0 0 0 + </DataArray> + </CellData> + <Points> + <DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii"> + 0 0 0 0.5 0 0 0.5 0.5 0.5 0 0.5 0.5 + 1 0 0 1 0.5 0.5 0 1 1 0.5 1 1 + 1 1 1 + </DataArray> + </Points> + <Cells> + <DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii"> + 0 1 2 0 2 3 1 4 2 4 5 2 + 3 2 6 2 7 6 2 5 8 2 8 7 + </DataArray> + <DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii"> + 3 6 9 12 15 18 21 24 + </DataArray> + <DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii"> + 5 5 5 5 5 5 5 5 + </DataArray> + </Cells> + </Piece> + </UnstructuredGrid> +</VTKFile>