Commit bac837b3 authored by Bernd Flemisch's avatar Bernd Flemisch
Browse files

add tests for the 2p decoupled model using the AMG backend, possibly in...

add tests for the 2p decoupled model using the AMG backend, possibly in parallel. Reviewed by Markus.

git-svn-id: svn://svn.iws.uni-stuttgart.de/DUMUX/dumux/trunk@10170 2fb0f335-1f38-0410-981e-8018bf24f1b0
parent 0c7269b3
......@@ -418,6 +418,7 @@ file(COPY test/implicit/richards/test_ccrichards.input DESTINATION test/implicit
file(COPY test/decoupled/1p/test_1p.input DESTINATION test/decoupled/1p/)
file(COPY test/decoupled/2p/test_transport.input DESTINATION test/decoupled/2p)
file(COPY test/decoupled/2p/test_impes.input DESTINATION test/decoupled/2p)
file(COPY test/decoupled/2p/test_impeswithamg.input DESTINATION test/decoupled/2p)
file(COPY test/decoupled/2p/test_mpfa2p.input DESTINATION test/decoupled/2p)
file(COPY test/decoupled/2p/test_impesadaptive.input DESTINATION test/decoupled/2p)
file(COPY test/decoupled/2p2c/test_adaptive2p2c.input DESTINATION test/decoupled/2p2c)
......@@ -447,9 +448,7 @@ add_test(test_pengrobinson test/material/pengrobinson/test_pengrobinson)
add_test(test_tabulation test/material/tabulation/test_tabulation)
add_test(test_box1p bin/runTest.sh references/1ptestbox-reference.vtu 1ptestbox-00002.vtu test/implicit/1p/test_box1p -Grid.File test/implicit/1p/grids/test_1p_2d.dgf -TimeManager.TEnd 1 -TimeManager.DtInitial 1)
add_test(test_box1pwithamg bin/runTest.sh references/1ptestbox-reference.vtu 1ptestboxwithamg-00002.vtu test/implicit/1p/test_box1pwithamg -Grid.File test/implicit/1p/grids/test_1p_2d.dgf -TimeManager.TEnd 1 -TimeManager.DtInitial 1)
add_test(test_cc1p bin/runTest.sh references/1ptestcc-reference.vtu 1ptestcc-00002.vtu test/implicit/1p/test_cc1p -Grid.File test/implicit/1p/grids/test_1p_2d.dgf -TimeManager.TEnd 1 -TimeManager.DtInitial 1)
add_test(test_cc1pwithamg bin/runTest.sh references/1ptestcc-reference.vtu 1ptestccwithamg-00002.vtu test/implicit/1p/test_cc1pwithamg -Grid.File test/implicit/1p/grids/test_1p_2d.dgf -TimeManager.TEnd 1 -TimeManager.DtInitial 1)
add_test(test_box1p2c bin/runTest.sh references/outflowbox-reference.vtu outflowbox-00010.vtu test/implicit/1p2c/test_box1p2c -Grid.File test/implicit/1p2c/grids/test_1p2c.dgf -TimeManager.TEnd 100 -TimeManager.DtInitial 1)
add_test(test_cc1p2c bin/runTest.sh references/outflowcc-reference.vtu outflowcc-00010.vtu test/implicit/1p2c/test_cc1p2c -Grid.File test/implicit/1p2c/grids/test_1p2c.dgf -TimeManager.TEnd 100 -TimeManager.DtInitial 1)
add_test(test_box2p bin/runTest.sh references/lensbox-reference.vtu lensbox-00009.vtu test/implicit/2p/test_box2p -Grid.File test/implicit/2p/grids/test_2p.dgf -TimeManager.TEnd 3000 -TimeManager.DtInitial 250)
......@@ -495,6 +494,16 @@ add_test(test_multiphysics2p2c bin/runTest.sh references/test_multiphysics2p2c-r
add_test(tutorial_coupled tutorial/tutorial_coupled)
add_test(tutorial_decoupled tutorial/tutorial_decoupled)
if(DUNE_pdelab_FOUND)
add_test(test_box1pwithamg bin/runTest.sh references/1ptestbox-reference.vtu 1ptestboxwithamg-00002.vtu test/implicit/1p/test_box1pwithamg -Grid.File test/implicit/1p/grids/test_1p_2d.dgf -TimeManager.TEnd 1 -TimeManager.DtInitial 1)
add_test(test_cc1pwithamg bin/runTest.sh references/1ptestcc-reference.vtu 1ptestccwithamg-00002.vtu test/implicit/1p/test_cc1pwithamg -Grid.File test/implicit/1p/grids/test_1p_2d.dgf -TimeManager.TEnd 1 -TimeManager.DtInitial 1)
if(MPI_FOUND)
add_test(test_impeswithamg bin/runTest.sh references/test_impes-reference-parallel.vtu s0002-p0001-test_impeswithamg-00013.vtu ${MPIEXEC} -np 2 test/decoupled/2p/test_impeswithamg)
else(MPI_FOUND)
add_test(test_impeswithamg bin/runTest.sh references/test_impes-reference.vtu test_impeswithamg-00013.vtu test/decoupled/2p/test_impeswithamg)
endif(MPI_FOUND)
endif(DUNE_pdelab_FOUND)
if(SUPERLU_FOUND)
add_test(test_stokes bin/runTest.sh references/stokes-reference.vtu stokes-00013.vtu test/freeflow/stokes/test_stokes -Grid.File test/freeflow/stokes/grids/test_stokes.dgf)
add_test(test_stokes2c bin/runTest.sh references/stokes2c-reference.vtu stokes2c-00007.vtu test/freeflow/stokes2c/test_stokes2c -Grid.File test/freeflow/stokes2c/grids/test_stokes2c.dgf)
......
......@@ -101,6 +101,7 @@ template<class TypeTag> class FVPressure2P: public FVPressure<TypeTag>
typedef typename GET_PROP(TypeTag, SolutionTypes) SolutionTypes;
typedef typename SolutionTypes::PrimaryVariables PrimaryVariables;
typedef typename GET_PROP_TYPE(TypeTag, CellData) CellData;
typedef typename GET_PROP_TYPE(TypeTag, PressureSolutionVector) PressureSolutionVector;
typedef typename SolutionTypes::ScalarSolution ScalarSolutionType;
......@@ -190,13 +191,12 @@ public:
this->solve();
if (solveTwice)
{
Dune::BlockVector < Dune::FieldVector<Scalar, 1>
> pressureOld(this->pressure());
PressureSolutionVector pressureOld(this->pressure());
this->assemble(false);
this->solve();
Dune::BlockVector < Dune::FieldVector<Scalar, 1> > pressureDiff(pressureOld);
PressureSolutionVector pressureDiff(pressureOld);
pressureDiff -= this->pressure();
pressureOld = this->pressure();
Scalar pressureNorm = pressureDiff.infinity_norm();
......
......@@ -47,10 +47,6 @@ template<class TypeTag> class FVPressure
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
///@cond 0
typedef typename GET_PROP(TypeTag, SolutionTypes)::ScalarSolution ScalarSolution;
///@endcond
typedef typename GET_PROP_TYPE(TypeTag, CellData) CellData;
enum
{
......@@ -105,11 +101,11 @@ protected:
void solve();
//!Returns the vector containing the pressure solution
ScalarSolution& pressure()
PressureSolution& pressure()
{ return pressure_;}
//!Returns the vector containing the pressure solution
const ScalarSolution& pressure() const
const PressureSolution& pressure() const
{ return pressure_;}
public:
......
......@@ -45,10 +45,10 @@ template <class TypeTag> class AMGBackend;
namespace Properties
{
//! the PDELab finite element map used for the gridfunctionspace
NEW_PROP_TAG(ImplicitLocalFemMap);
NEW_PROP_TAG(AMGLocalFemMap);
//! box: use the (multi-)linear local FEM space associated with cubes by default
SET_PROP(BoxModel, ImplicitLocalFemMap)
SET_PROP(BoxModel, AMGLocalFemMap)
{
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
......@@ -58,7 +58,17 @@ public:
};
//! cell-centered: use the element-wise constant local FEM space by default
SET_PROP(CCModel, ImplicitLocalFemMap)
SET_PROP(CCModel, AMGLocalFemMap)
{
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
enum{dim = GridView::dimension};
public:
typedef Dumux::P0LocalFiniteElementMap<Scalar,Scalar,dim> type;
};
//! decoupled models: use the element-wise constant local FEM space by default
SET_PROP(DecoupledModel, AMGLocalFemMap)
{
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
......@@ -68,10 +78,10 @@ public:
};
//! the type of the employed PDELab backend
NEW_PROP_TAG(ImplicitPDELabBackend);
NEW_PROP_TAG(AMGPDELabBackend);
//! box: use the non-overlapping PDELab AMG backend
SET_PROP(BoxModel, ImplicitPDELabBackend)
SET_PROP(BoxModel, AMGPDELabBackend)
{
typedef typename Dumux::AMGBackend<TypeTag>::GridOperator GridOperator;
public:
......@@ -79,7 +89,15 @@ public:
};
//! cell-centered: use the overlapping PDELab AMG backend
SET_PROP(CCModel, ImplicitPDELabBackend)
SET_PROP(CCModel, AMGPDELabBackend)
{
typedef typename Dumux::AMGBackend<TypeTag>::GridOperator GridOperator;
public:
typedef Dune::PDELab::ISTLBackend_BCGS_AMG_SSOR<GridOperator> type;
};
//! decoupled model: use the overlapping PDELab AMG backend
SET_PROP(DecoupledModel, AMGPDELabBackend)
{
typedef typename Dumux::AMGBackend<TypeTag>::GridOperator GridOperator;
public:
......@@ -101,6 +119,32 @@ SET_PROP(CCModel, SolutionVector)
public:
typedef typename GridOperator::Traits::Domain type;
};
//! decoupled model: reset the type of solution vector to be PDELab conforming
SET_PROP(DecoupledModel, PressureSolutionVector)
{
typedef typename Dumux::AMGBackend<TypeTag>::GridOperator GridOperator;
public:
typedef typename GridOperator::Traits::Domain type;
};
//! decoupled model: reset the type of solution vector to be PDELab conforming
SET_PROP(DecoupledModel, PressureRHSVector)
{
typedef typename Dumux::AMGBackend<TypeTag>::GridOperator GridOperator;
public:
typedef typename GridOperator::Traits::Domain type;
};
//! set a property JacobianMatrix also for the decoupled models
SET_PROP(DecoupledModel, JacobianMatrix)
{
public:
typedef typename GET_PROP_TYPE(TypeTag, PressureCoefficientMatrix) type;
};
}
/*!
......@@ -141,11 +185,12 @@ class AMGBackend
{
typedef typename GET_PROP_TYPE(TypeTag, GridView) GridView;
typedef typename GET_PROP_TYPE(TypeTag, Problem) Problem;
typedef typename GET_PROP_TYPE(TypeTag, ImplicitLocalFemMap) LocalFemMap;
typedef typename GET_PROP_TYPE(TypeTag, AMGLocalFemMap) LocalFemMap;
typedef typename GET_PROP_TYPE(TypeTag, Scalar) Scalar;
enum { dim = GridView::dimension };
typedef typename Dune::PDELab::NoConstraints Constraints;
enum { numEq = GET_PROP_VALUE(TypeTag, NumEq) };
typedef typename GET_PROP_TYPE(TypeTag, JacobianMatrix) JacobianMatrix;
enum { numEq = JacobianMatrix::block_type::rows};
typedef Dune::PDELab::GridFunctionSpace<GridView,
LocalFemMap,
Constraints,
......@@ -168,7 +213,7 @@ public:
ConstraintsTrafo,
true
> GridOperator;
typedef typename GET_PROP_TYPE(TypeTag, ImplicitPDELabBackend) PDELabBackend;
typedef typename GET_PROP_TYPE(TypeTag, AMGPDELabBackend) PDELabBackend;
/*!
* \brief Construct the backend.
......
check_PROGRAMS = test_impes test_impesadaptive test_transport test_mpfa2p
check_PROGRAMS = test_impes \
test_impesadaptive \
test_impeswithamg \
test_transport \
test_mpfa2p
noinst_HEADERS = *.hh
EXTRA_DIST=*reference.vtu *.input grids/*.dgf CMakeLists.txt
......@@ -7,6 +11,8 @@ test_impes_SOURCES = test_impes.cc
test_impesadaptive_SOURCES = test_impesadaptive.cc
test_impeswithamg_SOURCES = test_impeswithamg.cc
test_transport_SOURCES = test_transport.cc
test_mpfa2p_SOURCES = test_mpfa2p.cc
......
DGF
Interval
0 0 % first corner
300 60 % second corner
30 6 % cells in x and y direction
#
GridParameter
% set overlap to 1
overlap 1
#
BOUNDARYDOMAIN
default 1 % all boundaries have id 1
#BOUNDARYDOMAIN
# unitcube.dgf
......@@ -19,6 +19,9 @@ NumberOfCellsY = 6 # [-] resolution in y-direction
UpperRightX = 300 # [m] length of the domain
UpperRightY = 60 # [m] height of the domain
[Problem]
Name = test_impes # name passed to the output routines
############################################################
# Optional arguments
############################################################
......
......@@ -29,7 +29,6 @@
#endif
#include <dune/grid/yaspgrid.hh>
#include <dune/grid/sgrid.hh>
#include <dumux/io/cubegridcreator.hh>
#include <dumux/material/fluidsystems/liquidphase.hh>
......@@ -49,6 +48,10 @@
#include<dumux/decoupled/2p/transport/fv/evalcflfluxcoats.hh>
#if HAVE_DUNE_PDELAB
#include <dumux/linear/amgbackend.hh>
#endif
namespace Dumux
{
......@@ -72,7 +75,6 @@ SET_PROP(IMPESTestProblem, Grid)
typedef Dune::UGGrid<2> type;
#else
typedef Dune::YaspGrid<2> type;
//typedef Dune::SGrid<2, 2> type;
#endif
};
......@@ -125,6 +127,17 @@ SET_BOOL_PROP(IMPESTestProblem, ProblemEnableGravity, false);
SET_TYPE_PROP(IMPESTestProblem, EvalCflFluxFunction, Dumux::EvalCflFluxCoats<TypeTag>);
SET_SCALAR_PROP(IMPESTestProblem, ImpetCFLFactor, 0.95);
#if HAVE_DUNE_PDELAB
// set up an additional problem where the AMG backend is used
NEW_TYPE_TAG(IMPESTestProblemWithAMG, INHERITS_FROM(IMPESTestProblem));
// use the AMG backend for the corresponding test
SET_TYPE_PROP(IMPESTestProblemWithAMG, LinearSolver, Dumux::AMGBackend<TypeTag>);
// Set the grid type
SET_TYPE_PROP(IMPESTestProblemWithAMG, Grid, Dune::YaspGrid<2>);
// set the GridCreator property
SET_TYPE_PROP(IMPESTestProblemWithAMG, GridCreator, Dumux::DgfGridCreator<TypeTag>);
#endif
}
/*!
......@@ -182,7 +195,9 @@ typedef typename GET_PROP(TypeTag, SolutionTypes) SolutionTypes;
public:
IMPESTestProblem(TimeManager &timeManager, const GridView &gridView) :
ParentType(timeManager, gridView), eps_(1e-6)
{}
{
name_ = GET_RUNTIME_PARAM(TypeTag, std::string, Problem.Name);
}
/*!
* \name Problem parameters
......@@ -194,9 +209,9 @@ ParentType(timeManager, gridView), eps_(1e-6)
*
* This is used as a prefix for files generated by the simulation.
*/
const char *name() const
{
return "test_impes";
const std::string name() const
{
return name_;
}
bool shouldWriteRestartFile() const
......@@ -298,6 +313,7 @@ void initial(PrimaryVariables &values,
private:
const Scalar eps_;
std::string name_;
};
} //end namespace
......
// -*- 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
*
* \ingroup IMPETtests
* \brief test for the sequential 2p model
*/
#include "config.h"
#include "test_impesproblem.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.NumberOfCellsX Resolution in x-direction [-]\n"
"\t-Grid.NumberOfCellsY Resolution in y-direction [-]\n"
"\t-Grid.UpperRightX Length of the domain [m]\n"
"\t-Grid.UpperRightY Height of the domain [m]\n";
std::cout << errorMessageOut
<< "\n";
}
}
////////////////////////
// the main function
////////////////////////
int main(int argc, char** argv)
{
typedef TTAG(IMPESTestProblemWithAMG) ProblemTypeTag;
return Dumux::start<ProblemTypeTag>(argc, argv, usage);
}
###############################################################
# Parameter file for test_impes.
# Everything behind a '#' is a comment.
# Type "./test_impes --help" for more information.
###############################################################
###############################################################
# Mandatory arguments
###############################################################
[TimeManager]
TEnd = 1e7 # [s]
DtInitial = 0 #[s]
[Grid]
File = ./grids/test_impeswithamg.dgf
[Problem]
Name = test_impeswithamg # name passed to the output routines
############################################################
# Optional arguments
############################################################
[Vtk]
#OutputLevel = 1 # 0 -> only primary variables (default), 1 -> also secondary variables
###############################################################
# Simulation restart
#
# DuMux simulations can be restarted from *.drs files
# Set Restart to the value of a specific file,
# e.g.: 'Restart = 27184.1' for the restart file
# name_time=27184.1_rank=0.drs
# Please comment in the two lines below, if restart is desired.
###############################################################
# [TimeManager]
# Restart = ...
<?xml version="1.0"?>
<VTKFile type="UnstructuredGrid" version="0.1" byte_order="LittleEndian">
<UnstructuredGrid>
<Piece NumberOfCells="90" NumberOfPoints="112">
<CellData Scalars="wetting pressure">
<DataArray type="Float32" Name="wetting pressure" NumberOfComponents="1" format="ascii">
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999 199999
199999 199999 199999 199999 199999 199999
</DataArray>
<DataArray type="Float32" Name="wetting saturation" NumberOfComponents="1" format="ascii">
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.2 0.2
</DataArray>
</CellData>
<Points>
<DataArray type="Float32" Name="Coordinates" NumberOfComponents="3" format="ascii">
150 0 0 160 0 0 150 10 0 160 10 0
170 0 0 170 10 0 180 0 0 180 10 0
190 0 0 190 10 0 200 0 0 200 10 0
210 0 0 210 10 0 220 0 0 220 10 0
230 0 0 230 10 0 240 0 0 240 10 0
250 0 0 250 10 0 260 0 0 260 10 0
270 0 0 270 10 0 280 0 0 280 10 0
290 0 0 290 10 0 300 0 0 300 10 0
150 20 0 160 20 0 170 20 0 180 20 0
190 20 0 200 20 0 210 20 0 220 20 0
230 20 0 240 20 0 250 20 0 260 20 0
270 20 0 280 20 0 290 20 0 300 20 0
150 30 0 160 30 0 170 30 0 180 30 0
190 30 0 200 30 0 210 30 0 220 30 0
230 30 0 240 30 0 250 30 0 260 30 0
270 30 0 280 30 0 290 30 0 300 30 0
150 40 0 160 40 0 170 40 0 180 40 0
190 40 0 200 40 0 210 40 0 220 40 0
230 40 0 240 40 0 250 40 0 260 40 0
270 40 0 280 40 0 290 40 0 300 40 0
150 50 0 160 50 0 170 50 0 180 50 0
190 50 0 200 50 0 210 50 0 220 50 0
230 50 0 240 50 0 250 50 0 260 50 0
270 50 0 280 50 0 290 50 0 300 50 0
150 60 0 160 60 0 170 60 0 180 60 0
190 60 0 200 60 0 210 60 0 220 60 0
230 60 0 240 60 0 250 60 0 260 60 0
270 60 0 280 60 0 290 60 0 300 60 0
</DataArray>
</Points>
<Cells>
<DataArray type="Int32" Name="connectivity" NumberOfComponents="1" format="ascii">
0 1 3 2 1 4 5 3 4 6 7 5
6 8 9 7 8 10 11 9 10 12 13 11
12 14 15 13 14 16 17 15 16 18 19 17
18 20 21 19 20 22 23 21 22 24 25 23
24 26 27 25 26 28 29 27 28 30 31 29
2 3 33 32 3 5 34 33 5 7 35 34
7 9 36 35 9 11 37 36 11 13 38 37
13 15 39 38 15 17 40 39 17 19 41 40
19 21 42 41 21 23 43 42 23 25 44 43
25 27 45 44 27 29 46 45 29 31 47 46
32 33 49 48 33 34 50 49 34 35 51 50
35 36 52 51 36 37 53 52 37 38 54 53
38 39 55 54 39 40 56 55 40 41 57 56
41 42 58 57 42 43 59 58 43 44 60 59
44 45 61 60 45 46 62 61 46 47 63 62
48 49 65 64 49 50 66 65 50 51 67 66
51 52 68 67 52 53 69 68 53 54 70 69
54 55 71 70 55 56 72 71 56 57 73 72
57 58 74 73 58 59 75 74 59 60 76 75
60 61 77 76 61 62 78 77 62 63 79 78
64 65 81 80 65 66 82 81 66 67 83 82
67 68 84 83 68 69 85 84 69 70 86 85
70 71 87 86 71 72 88 87 72 73 89 88
73 74 90 89 74 75 91 90 75 76 92 91
76 77 93 92 77 78 94 93 78 79 95 94
80 81 97 96 81 82 98 97 82 83 99 98
83 84 100 99 84 85 101 100 85 86 102 101
86 87 103 102 87 88 104 103 88 89 105 104
89 90 106 105 90 91 107 106 91 92 108 107
92 93 109 108 93 94 110 109 94 95 111 110
</DataArray>
<DataArray type="Int32" Name="offsets" NumberOfComponents="1" format="ascii">
4 8 12 16 20 24 28 32 36 40 44 48
52 56 60 64 68 72 76 80 84 88 92 96
100 104 108 112 116 120 124 128 132 136 140 144
148 152 156 160 164 168 172 176 180 184 188 192
196 200 204 208 212 216 220 224 228 232 236 240
244 248 252 256 260 264 268 272 276 280 284 288
292 296 300 304 308 312 316 320 324 328 332 336
340 344 348 352 356 360
</DataArray>
<DataArray type="UInt8" Name="types" NumberOfComponents="1" format="ascii">
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9 9 9 9 9 9 9
9 9 9 9 9 9
</DataArray>
</Cells>
</Piece>
</UnstructuredGrid>
</VTKFile>
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment