1#ifndef DUNE_FEM_GRIDSOLUTION_HH
2#define DUNE_FEM_GRIDSOLUTION_HH
6#include <dune/common/exceptions.hh>
7#include <dune/grid/utility/hierarchicsearch.hh>
13#include <dune/grid/spgrid.hh>
31 template <
class Gr
idImp,
class DiscreteFunctionImp >
38 typedef typename DiscreteFunctionSpaceType :: RangeType
RangeType ;
39 typedef typename DiscreteFunctionSpaceType :: DomainType
DomainType ;
40 typedef typename DiscreteFunctionSpaceType :: GridPartType
GridPartType ;
44 typedef typename GridType :: template Codim<0> :: Entity
EntityType;
66 const int rank = -1 ) :
78 DUNE_THROW(NotImplemented,
" GridSolution needs to be switched to DataWriter");
80 CheckPointerType :: restoreData(
grid(),
data_, checkPointFile, rank );
106 typedef typename EntityType :: Geometry Geometry;
107 const Geometry& geo = entity.geometry();
113 const auto &refElement = Dune::ReferenceElements< typename GridType::ctype, GridType::dimensionworld >::general( entity.type() );
115 assert( refElement.checkInside( local ) );
121 lf_.evaluate( local, result );
129 const int writeStep )
131 DUNE_THROW(NotImplemented,
" writeDiscreteFunction needs to be switched to DataWriter");
152 template <
class Gr
idImp,
class DiscreteFunctionImp >
161 typedef typename DiscreteFunctionSpaceType :: GridPartType
GridPartType;
164 typedef typename FunctionSpaceType :: RangeType
RangeType;
170 template <
class DomainType,
class Gr
id>
176 typedef typename Grid :: LevelGridView MacroView ;
177 typedef typename MacroView :: template Codim< 0 > :: Iterator Iterator ;
178 typedef typename Iterator :: Entity Entity;
179 const MacroView& macroView = grid.levelGridView( 0 );
180 const Iterator end = macroView.template end< 0 > ();
181 for( Iterator it = macroView.template begin< 0 > (); it != end; ++it )
183 const Entity& entity = * it ;
185 const auto &refElement = Dune::ReferenceElements< typename Grid::ctype, Grid::dimensionworld >::general( entity.type() );
187 typedef typename Entity :: Geometry Geometry;
188 const Geometry& geo = entity.geometry();
190 if( refElement.checkInside( geo.local( geo.center() ) ) )
198 template <
class DomainType,
class ct,
int dim,
template<
int >
class Strategy ,
class Comm>
199 struct CheckDomain<
DomainType, SPGrid< ct, dim, Strategy, Comm > >
201 typedef SPGrid< ct, dim, Strategy, Comm > Grid;
204 return grid.domain().contains( x );
212 int numProcs(
const std::string& checkPointFile)
const
214 int numProc = MPIManager :: size();
227 std::cout <<
"GridSolutionVector: Reading Grid " << p <<
" from checkpoint" << std::endl;
273 std::cerr <<
"GridSolutionVector::evaluate: no grid found for point " << x << std::endl;
287 const int writeStep = 0 )
289 GridSolutionType :: writeDiscreteFunction( grid,
discreteFunction, time, writeStep );
295 return solutions_[ rank ]->discreteFunction();
Definition: bindguard.hh:11
static bool readParameter(std::istream &file, const std::string keyword, T &data, bool verbose=true, bool warn=true)
Definition: asciiparser.hh:18
typename Impl::ConstLocalFunction< GridFunction >::Type ConstLocalFunction
Definition: const.hh:604
Implementation of the IOInterface. This class manages checkpointing.
Definition: datawriter.hh:238
static bool verbose()
obtain the cached value for fem.verbose
Definition: io/parameter.hh:445
creates a function with evaluate method from a check point
Definition: gridsolution.hh:33
ConstLocalFunction< DiscreteFunctionType > lf_
Definition: gridsolution.hh:56
void evaluate(const DomainType &x, RangeType &result) const
evaluates in a given space point
Definition: gridsolution.hh:101
DiscreteFunctionSpaceType::DomainType DomainType
Definition: gridsolution.hh:39
GridPtr< GridType > gridPtr_
Definition: gridsolution.hh:52
const GridType & grid() const
Definition: gridsolution.hh:62
HierarchicSearch< GridType, IndexSetType > HierarchicSearchType
Definition: gridsolution.hh:46
GridType & grid()
Definition: gridsolution.hh:61
DiscreteFunctionSpaceType::GridPartType GridPartType
Definition: gridsolution.hh:40
CheckPointer< GridType > CheckPointerType
Definition: gridsolution.hh:42
DiscreteFunctionSpaceType::RangeType RangeType
Definition: gridsolution.hh:38
IOTupleType data_
Definition: gridsolution.hh:57
const DiscreteFunctionType & discreteFunction() const
Definition: gridsolution.hh:138
DiscreteFunctionType discreteFunction_
Definition: gridsolution.hh:55
DiscreteFunctionSpaceType space_
Definition: gridsolution.hh:54
GridType * grid_
Definition: gridsolution.hh:51
GridPartType::IndexSetType IndexSetType
Definition: gridsolution.hh:41
void evaluate(const DomainType &x, const double time, RangeType &result) const
evaluates in a given space-time point
Definition: gridsolution.hh:90
HierarchicSearchType hierarchicSearch_
Definition: gridsolution.hh:58
GridPartType gridPart_
Definition: gridsolution.hh:53
GridSolution(const std::string checkPointFile, const int rank=-1)
Constructor.
Definition: gridsolution.hh:65
DiscreteFunctionType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
Definition: gridsolution.hh:37
GridType::template Codim< 0 >::Entity EntityType
Definition: gridsolution.hh:44
DiscreteFunctionImp DiscreteFunctionType
Definition: gridsolution.hh:36
static void writeDiscreteFunction(const GridType &grid, const DiscreteFunctionType &discreteFunction, const double time, const int writeStep)
writes a discrete function
Definition: gridsolution.hh:126
std::tuple< DiscreteFunctionType * > IOTupleType
Definition: gridsolution.hh:48
GridImp GridType
Definition: gridsolution.hh:35
Definition: gridsolution.hh:154
DiscreteFunctionType::DiscreteFunctionSpaceType DiscreteFunctionSpaceType
Definition: gridsolution.hh:159
DiscreteFunctionSpaceType::FunctionSpaceType FunctionSpaceType
Definition: gridsolution.hh:160
GridSolutionVector(const std::string checkPointFile)
Constructor.
Definition: gridsolution.hh:220
FunctionSpaceType::DomainFieldType DomainFieldType
Definition: gridsolution.hh:163
bool isInDomain(const DomainType &x, const GridType &grid) const
Definition: gridsolution.hh:278
DiscreteFunctionImp DiscreteFunctionType
Definition: gridsolution.hh:157
FunctionSpaceType::DomainType DomainType
Definition: gridsolution.hh:162
std::vector< GridSolutionType * > solutions_
Definition: gridsolution.hh:210
~GridSolutionVector()
Definition: gridsolution.hh:232
const DiscreteFunctionType & discreteFunction(const int rank) const
Definition: gridsolution.hh:292
FunctionSpaceType::RangeFieldType RangeFieldType
Definition: gridsolution.hh:165
void evaluate(const DomainType &x, RangeType &result) const
evaluates in a given space point
Definition: gridsolution.hh:259
int numProcs(const std::string &checkPointFile) const
Definition: gridsolution.hh:212
void evaluate(const DomainType &x, const double time, RangeType &result) const
evaluates in a given space-time point
Definition: gridsolution.hh:248
GridSolution< GridType, DiscreteFunctionType > GridSolutionType
Definition: gridsolution.hh:167
static void writeDiscreteFunction(const GridType &grid, const DiscreteFunctionType &discreteFunction, const double time, const int writeStep=0)
writes a discrete function
Definition: gridsolution.hh:284
FunctionSpaceType::RangeType RangeType
Definition: gridsolution.hh:164
DiscreteFunctionSpaceType::GridPartType GridPartType
Definition: gridsolution.hh:161
const int numProcs_
Definition: gridsolution.hh:209
GridImp GridType
Definition: gridsolution.hh:156
Definition: gridsolution.hh:172
static bool isInside(const DomainType &x, const Grid &grid)
Definition: gridsolution.hh:173