33#ifndef __H__UG__LIB_DISC__FUNCTION_SPACE__GRID_FUNCTION_UTIL__
34#define __H__UG__LIB_DISC__FUNCTION_SPACE__GRID_FUNCTION_UTIL__
70using boost::math::isnan;
74using boost::math::isinf;
78template <
typename TBaseElem,
typename TGr
idFunction>
84 const std::vector<number>& vScale
88 std::vector<DoFIndex> vInd;
95 for (; iter != iterEnd; ++iter)
97 for (
size_t fi = 0; fi < dd->num_fct(); ++fi)
99 size_t nInd = dd->inner_dof_indices(*iter, fi, vInd);
102 for (
size_t dof = 0; dof < nInd; ++dof)
103 DoFRef(*vecOut, vInd[dof]) = vScale[fi] *
DoFRef(*vecIn, vInd[dof]);
120template <
typename TGr
idFunction>
125 const std::vector<number>& scalingFactors
129 size_t n = scalingFactors.size();
130 UG_COND_THROW(n != vecIn->num_fct(),
"Number of scaling factors (" << n <<
") "
131 "does not match number of functions given in dimless vector (" << vecIn->num_fct() <<
").");
134 UG_COND_THROW(n != scaledVecOut->num_fct(),
"Input and output vectors do not have "
135 "the same number of functions (" << n <<
" vs. " << scaledVecOut->num_fct() <<
").");
136 for (
size_t fct = 0; fct < n; ++fct)
138 UG_COND_THROW(vecIn->num_dofs(fct) != scaledVecOut->num_dofs(fct),
139 "Input and output vectors do not have the same number of DoFs for function " << fct
140 <<
" (" << vecIn->num_dofs(fct) <<
" vs. " << scaledVecOut->num_dofs(fct) <<
").");
146 ScaleGFOnElems<Vertex, TGridFunction>(dd, scaledVecOut, vecIn, scalingFactors);
147 if (dd->max_dofs(
EDGE))
148 ScaleGFOnElems<Edge, TGridFunction>(dd, scaledVecOut, vecIn, scalingFactors);
149 if (dd->max_dofs(
FACE))
150 ScaleGFOnElems<Face, TGridFunction>(dd, scaledVecOut, vecIn, scalingFactors);
152 ScaleGFOnElems<Volume, TGridFunction>(dd, scaledVecOut, vecIn, scalingFactors);
169template<
typename TGr
idFunction,
typename TBaseElem>
172 typedef TGridFunction GF;
173 typedef typename GF::template traits<TBaseElem>::const_iterator iter_type;
175 iter_type iter = spGF->template begin<TBaseElem>();
176 iter_type iterEnd = spGF->template end<TBaseElem>();
181 std::vector<DoFIndex> vMultInd;
182 for(; iter != iterEnd; ++iter)
185 TBaseElem* elem = *iter;
188 if (pbm && pbm->
is_slave(elem))
continue;
191 spGF->inner_dof_indices(elem, fct, vMultInd);
194 for(
size_t i = 0; i < vMultInd.size(); ++i)
196 DoFRef(*spGF, vMultInd[i]) -= sub;
211template<
typename TGr
idFunction>
215 const std::vector<std::string>& vCmp,
219 typedef TGridFunction GF;
226 UG_THROW(
"AverageComponent: expects a valid GridFunction.");
229 spGF->approx_space()->dof_distribution_info();
233 std::vector<number> vIntegral(vCmp.size(), 0.0);
234 for(
size_t f = 0; f < vCmp.size(); f++){
235 const size_t fct = spGF->fct_id_by_name(vCmp[f].c_str());
236 vIntegral[f] =
Integral(spGF, vCmp[f].c_str(), NULL, ddinfo->lfeid(fct).order());
240 for(
size_t f = 0; f < vCmp.size(); f++)
242 const number sub = (vIntegral[f] - mean) / area;
243 const size_t fct = spGF->fct_id_by_name(vCmp[f].c_str());
245 if(ddinfo->max_fct_dofs(fct,
VERTEX)) SubtractValueFromComponent<GF, Vertex>(spGF, fct, sub);
246 if(ddinfo->max_fct_dofs(fct,
EDGE)) SubtractValueFromComponent<GF, Edge>(spGF, fct, sub);
247 if(ddinfo->max_fct_dofs(fct,
FACE)) SubtractValueFromComponent<GF, Face>(spGF, fct, sub);
248 if(ddinfo->max_fct_dofs(fct,
VOLUME)) SubtractValueFromComponent<GF, Volume>(spGF, fct, sub);
259template<
typename TGr
idFunction>
272template<
typename TGr
idFunction>
288template<
typename TGr
idFunction>
304template <
typename TGr
idFunction,
typename TBaseElem>
311 typedef typename TGridFunction::template traits<TBaseElem>::const_iterator t_elem_iter;
313 std::vector<DoFIndex> ind;
318 for (t_elem_iter vi = u->template begin<TBaseElem> ();
319 vi != u->template end<TBaseElem> (); ++vi)
321 TBaseElem * vert = *vi;
324 u->inner_dof_indices (vert, fct, ind);
326 if (ind.size () != 1)
327 UG_THROW (
"SumGFValuesAt: The function must be scalar!");
330 sum +=
DoFRef (*u, ind [0]);
349template <
typename TGr
idFunction,
typename TBaseElem>
353 const char * fct_names
357 std::vector<std::string> vfctNames;
359 if (vfctNames.size () != 1)
360 UG_THROW (
"SumGFValuesAt: Exactly one function name must be specified.");
362 fctGroup.
add (vfctNames [0]);
365 return SumGFValuesAt<TGridFunction, TBaseElem> (u, fctGroup[0]);
374template <
typename TGr
idFunction,
typename TBaseElem>
382 typedef typename TGridFunction::template traits<TBaseElem>::const_iterator t_elem_iter;
384 std::vector<DoFIndex> ind;
389 for (
size_t i = 0; i < ssGroup.
size (); i++)
391 int ssi = ssGroup [i];
394 for (t_elem_iter vi = u->template begin<TBaseElem> (ssi);
395 vi != u->template end<TBaseElem> (ssi); ++vi)
397 TBaseElem * vert = *vi;
400 u->inner_dof_indices (vert, fct, ind);
402 if (ind.size () != 1)
403 UG_THROW (
"SumGFValuesAt: The function must be scalar!");
406 sum +=
DoFRef (*u, ind [0]);
426template <
typename TGr
idFunction,
typename TBaseElem>
430 const char * fct_names,
431 const char * subset_names
435 std::vector<std::string> vfctNames;
437 if (vfctNames.size () != 1)
438 UG_THROW (
"SumGFValuesAt: Exactly one function name must be specified.");
440 fctGroup.
add (vfctNames [0]);
443 std::vector<std::string> vssNames;
445 SubsetGroup ssGroup (u->domain()->subset_handler ());
446 ssGroup.
add (vssNames);
449 return SumGFValuesAt<TGridFunction, TBaseElem> (u, fctGroup[0], ssGroup);
462template <
typename TGr
idFunction,
typename TBaseElem>
465 const TGridFunction * u,
469 typedef typename TGridFunction::template traits<TBaseElem>::const_iterator t_elem_iter;
471 std::vector<DoFIndex> ind;
474 for (t_elem_iter vi = u->template begin<TBaseElem> ();
475 vi != u->template end<TBaseElem> (); ++vi)
477 TBaseElem * vert = *vi;
480 u->inner_dof_indices (vert, fct, ind);
482 if (ind.size () != 1)
483 UG_THROW (
"CheckGFforNaN: The function must be scalar!");
489 int si = u->domain()->subset_handler()->get_subset_index (vert);
490 UG_LOG (
"nan at index " << ind [0] <<
", grid data idx " << vert->grid_data_index ());
492 UG_LOG (
", subset " << u->domain()->subset_handler()->get_subset_name (si))
498 int si = u->domain()->subset_handler()->get_subset_index (vert);
499 UG_LOG (
"inf at index " << ind [0] <<
", grid data idx " << vert->grid_data_index ());
501 UG_LOG (
", subset " << u->domain()->subset_handler()->get_subset_name (si))
518template <
typename TGr
idFunction,
typename TBaseElem>
521 const TGridFunction * u,
522 const char * fct_names
526 std::vector<std::string> vfctNames;
529 for (
size_t i = 0; i < vfctNames.size (); i++)
530 fctGroup.
add (vfctNames [i]);
534 for (
size_t i = 0; i < vfctNames.size (); i++)
536 UG_LOG (
"Checking " << vfctNames[i] <<
" ... ");
537 if (CheckGFforNaN<TGridFunction, TBaseElem> (u, fctGroup[i]))
553template <
typename TGr
idFunction,
typename TBaseElem>
556 const TGridFunction * u,
562 for (
size_t i = 0; i < fctGroup.
size (); i++)
564 UG_LOG (
"Checking fct #" << i <<
" ... ");
565 if (CheckGFforNaN<TGridFunction, TBaseElem> (u, fctGroup[i]))
576template <
typename TGr
idFunction,
typename TBaseElem>
585 typedef typename TGridFunction::template traits<TBaseElem>::const_iterator elem_it;
590 std::vector<DoFIndex> vDI;
591 elem_it it = u->template begin<TBaseElem>();
592 elem_it itEnd = u->template end<TBaseElem>();
593 for (; it != itEnd; ++it)
595 TBaseElem* elem = *it;
598 const size_t nInd = u->inner_dof_indices(elem, cmp, vDI,
true);
599 for (
size_t i = 0; i < nInd; ++i)
602 if (val < lowerBnd || val > upperBnd)
604 UG_LOG_ALL_PROCS(
"Function value for component " << cmp <<
" (" << val <<
") "
605 "is outside the specified range [" << lowerBnd <<
", " << upperBnd <<
"] "
624template <
typename TGr
idFunction>
634 if (u->max_fct_dofs(cmp, 0))
635 ret = ret && CheckGFValuesWithinBounds<TGridFunction, Vertex>(u, cmp, lowerBnd, upperBnd);
636 if (u->max_fct_dofs(cmp, 1))
637 ret = ret && CheckGFValuesWithinBounds<TGridFunction, Edge>(u, cmp, lowerBnd, upperBnd);
638 if (u->max_fct_dofs(cmp, 2))
639 ret = ret && CheckGFValuesWithinBounds<TGridFunction, Face>(u, cmp, lowerBnd, upperBnd);
640 if (u->max_fct_dofs(cmp, 3))
641 ret = ret && CheckGFValuesWithinBounds<TGridFunction, Volume>(u, cmp, lowerBnd, upperBnd);
646template <
typename TGr
idFunction>
650 const char* fctNames,
655 std::vector<std::string> vFctNames;
658 const size_t nFct = vFctNames.size();
659 for (
size_t f = 0; f < nFct; ++f)
661 try {fctGroup.
add(vFctNames[f]);}
662 UG_CATCH_THROW(
"Could not add function " << vFctNames[f] <<
" to function group.");
666 const size_t fctGrpSz = fctGroup.
size();
667 for (
size_t f = 0; f < fctGrpSz; ++f)
680template<
typename TDomain>
689 std::vector<size_t> fctIndex;
690 std::vector<std::string> fctNames;
692 ExtractAlgebraIndices<TDomain>(domain, dd, fctIndex);
694 size_t numFct = dd->num_fct();
695 if(numFct <= 1)
return;
697 fctNames.resize(numFct);
698 for(
size_t i=0; i<numFct; i++)
699 fctNames[i] = dd->name(i);
701 name.append(
".indices");
702 std::fstream file(
name.c_str(), std::ios::out);
705 file <<
"NUMDOF " << fctNames.size() <<
"\n";
706 for(
size_t i=0; i<numFct; i++)
707 file << fctNames[i] <<
"\n";
709 for(
size_t i=0; i<fctIndex.size(); i++)
710 file << fctIndex[i] <<
"\n";
713template<
class TFunction>
715 const typename TFunction::algebra_type::matrix_type &A,
716 const TFunction &u) {
721 UG_THROW(
"Only '.mat' format supported for matrices, but"
722 " filename is '" << filename <<
"'." );
726 const static int dim = TFunction::domain_type::dim;
727 std::vector<MathVector<dim> > vPos;
740template<
typename TGr
idFunction>
744 typename TGridFunction::vector_type>& A,
745 const char* filename) {
763 std::string comment=
"%Generated with ug4." ) {
768 UG_THROW(
"Please use '.mtx' as file extension for MatrixMarket exchange files."
769 " (Filename is '" << filename <<
"')" );
780template<
class TFunction>
782 const typename TFunction::algebra_type::vector_type &b,
784 const typename TFunction::algebra_type::vector_type *pCompareVec = NULL) {
788 UG_THROW(
"Only '.vec' format supported for vectors, but"
789 " filename is '" << filename <<
"'." );
793 const static int dim = TFunction::domain_type::dim;
794 std::vector<MathVector<dim> > vPos;
802template<
class TFunction>
804 const char *filename,
805 const typename TFunction::algebra_type::matrix_type &A,
806 const typename TFunction::algebra_type::vector_type &b,
808 const typename TFunction::algebra_type::vector_type *pCompareVec = NULL) {
811 const static int dim = TFunction::domain_type::dim;
815 UG_THROW(
"Only '.vec' format supported for vectors." );
819 std::vector<MathVector<dim> > positions;
826template<
typename TGr
idFunction>
831template<
typename TGr
idFunction>
836template<
typename TGr
idFunction>
840 typename TGridFunction::vector_type>& A,
841 const char* filename) {
845template<
typename TGr
idFunction>
848 TGridFunction& compareVec,
850 typename TGridFunction::vector_type>& A,
851 const char* filename) {
858template<
typename vector_type>
859bool ReadVector(std::string filename, vector_type &vec,
int dim)
862 std::cout <<
" Reading std::vector from " << filename <<
"... ";
863 std::fstream matfile(filename.c_str(), std::ios::in);
864 if(matfile.is_open() ==
false) { std::cout <<
"failed.\n";
return false; }
866 int version=-1, dimension=-1, gridsize;
869 matfile >> dimension;
872 assert(version == 1);
873 assert(dimension == dim);
875 assert(gridsize == (
int)vec.size());
878 PROGRESS_START(prog, gridsize*2,
"ReadVector " << dimension <<
"d from " << filename <<
" , " << gridsize <<
" x " << gridsize);
879 for(
int i=0; i<gridsize; i++)
884 std::cout <<
" failed.\n";
890 if(dimension==3) matfile >> z;
893 int printStringsInWindow;
894 matfile >> printStringsInWindow;
897 bool bEOF = matfile.eof();
900 int from, to;
double value;
901 char c = matfile.peek();
902 if(c == -1 || c ==
'c' || c ==
'v' || matfile.eof())
905 matfile >> from >> to >> value;
909 bEOF = matfile.eof();
916template<
typename TGr
idFunction>
919 typename TGridFunction::algebra_type::vector_type b;
920 b.resize(u.num_indices());
926template<
class TFunction>
928 const typename TFunction::algebra_type::vector_type &b,
929 const TFunction &u) {
932 const static int dim = TFunction::domain_type::dim;
936 UG_THROW(
"Only '.csv' format supported for vectors, but"
937 " filename is '" << filename <<
"'." );
943 std::string
name(filename);
944 size_t iExtPos =
name.find_last_of(
".");
945 name.resize(iExtPos);
947 char ext[20]; snprintf(ext, 20,
"_p%05d.csv", rank);
952 std::vector<MathVector<dim> > positions;
959template<
typename TGr
idFunction>
978template<
typename TDomain,
typename TAlgebra>
981 std::string subset, std::string fct1, std::string fct2 )
985 size_t subSetID = spGridFct->subset_id_by_name( subset.c_str() );
988 size_t fct1ID = spGridFct->fct_id_by_name( fct1.c_str() );
989 size_t fct2ID = spGridFct->fct_id_by_name( fct2.c_str() );
993 size_t numElements = 0;
997 for( gridFctIterator iter = spGridFct->template begin<Vertex>((
int)subSetID);
998 iter != spGridFct->template end<Vertex>((
int)subSetID); ++iter ) {
1000 std::vector< DoFIndex > indFct1, indFct2;
1001 spGridFct->template dof_indices<Vertex>( *iter, fct1ID, indFct1 );
1002 spGridFct->template dof_indices<Vertex>( *iter, fct2ID, indFct2 );
1005 sum +=
DoFRef( *spGridFct, indFct1[0] ) -
DoFRef( *spGridFct, indFct2[0] );
1010 return sum / numElements;
1018template<
typename TDomain,
typename TAlgebra>
1022 static const int dim = TDomain::dim;
1114 UG_THROW(
"Only '.mat' format supported for matrices, but"
1115 " filename is '" << filename <<
"'." );
1121 if(mat.num_rows() != mat.num_cols())
1122 UG_THROW(
"DebugWriter: grid level the same, but non-square matrix.");
1124 const std::vector<MathVector<dim> >& vPos = this->
template get_positions<dim>();
1131 const std::vector<MathVector<dim> >& vFromPos = this->
template get_positions<dim>();
1133 std::vector<MathVector<dim> > vToPos;
1138 if(mat.num_cols() == vFromPos.size() && mat.num_rows() == vToPos.size())
1143 UG_THROW(
"GridFunctionDebugWriter: Wrong size of matrix for writing"
1145 <<vToPos.size()<<
" x "<<vFromPos.size()<<
") matrix. But "
1146 "passed matrix of size ("<<mat.num_rows()<<
" x "
1147 <<mat.num_cols()<<
").");
1163 std::vector<MathVector<dim> >& vPos =
1164 this->
template positions<dim>();
1167 ExtractPositions<TDomain>(
1175 const char* filename)
1185 UG_THROW(
"Only '.vec' format supported for vectors, but"
1186 " filename is '" <<
name <<
"'.");
1191 const std::vector<MathVector<dim> >& vPos =
1192 this->
template get_positions<dim>();
1208 TGridFunction vtkFunc(
1211 vtkFunc.resize_values(vec.size());
1212 vtkFunc.assign(vec);
1239template<
typename TGr
idFunction>
1241 TGridFunction::domain_type::dim> {
1257 "provide a grid function with set_reference_grid_function");
1270template<
typename TGr
idFunction,
typename TVector>
1298 "provide a grid function with set_reference_grid_function");
1305 const typename domain_type::position_accessor_type& aaPos =
1306 u.domain()->position_accessor();
1309 int nr = u.num_indices();
1314 typedef typename TGridFunction::template traits<Vertex>::const_iterator const_iterator;
1317 for (
int si = 0; si < u.num_subsets(); ++si) {
1319 const_iterator iter = u.template begin<Vertex>(si);
1320 const_iterator iterEnd = u.template end<Vertex>(si);
1322 for (; iter != iterEnd; ++iter) {
1327 std::vector<size_t> ind;
1330 u.inner_algebra_indices(v, ind);
1335 (*m_userData)(d, aaPos[v], t, si);
1338 for (
size_t i = 0; i < ind.size(); ++i) {
1339 const size_t index = ind[i];
1340 for (
size_t alpha = 0; alpha <
GetSize(vec[index]); ++alpha)
1357template<
typename TGr
idFunction>
1359 typename TGridFunction::algebra_type::vector_type> {
1404 vec.resize(numDoFs);
location name
Definition checkpoint_util.lua:128
Definition smart_pointer.h:296
Definition smart_pointer.h:107
bool invalid() const
returns true if the pointer is invalid, false if not.
Definition smart_pointer.h:212
Definition pcl_process_communicator.h:70
void allreduce(const void *sendBuf, void *recBuf, int count, DataType type, ReduceOperation op) const
performs MPI_Allreduce on the processes of the communicator.
Definition pcl_process_communicator.cpp:318
base class for approximation spaces without type of algebra or dof distribution
Definition approximation_space.h:279
Definition function_group.h:52
void add(size_t fct)
adds a function by id to this group
Definition function_group.cpp:79
size_t size() const
number of functions in this group
Definition function_group.h:116
Definition grid_function_util.h:1020
bool bConnViewerOut
Definition grid_function_util.h:1222
ApproximationSpace< TDomain > approximation_space_type
type of approximation space
Definition grid_function_util.h:1035
GridFunctionDebugWriter(SmartPtr< ApproximationSpace< TDomain > > spApproxSpace)
Constructor.
Definition grid_function_util.h:1042
static const int dim
dimension
Definition grid_function_util.h:1022
algebra_type::vector_type vector_type
type of vector
Definition grid_function_util.h:1029
void set_print_consistent(bool b)
sets if data shall be made consistent before printing
Definition grid_function_util.h:1082
virtual void write_matrix(const matrix_type &mat, const char *filename)
write matrix
Definition grid_function_util.h:1101
GridLevel m_glTo
Definition grid_function_util.h:1232
bool bConnViewerIndices
Definition grid_function_util.h:1223
void set_grid_levels(const GridLevel &glFrom, const GridLevel &glTo)
sets the grid level
Definition grid_function_util.h:1059
void set_grid_level(const GridLevel &gridLevel)
sets the grid level
Definition grid_function_util.h:1054
virtual void write_vector(const vector_type &vec, const char *filename)
write vector
Definition grid_function_util.h:1085
GridLevel grid_level() const
returns current grid level
Definition grid_function_util.h:1064
void set_vtk_output(bool b)
sets if writing to vtk
Definition grid_function_util.h:1073
SmartPtr< approximation_space_type > m_spApproxSpace
Definition grid_function_util.h:1219
bool bVTKOut
Definition grid_function_util.h:1226
IDebugWriter< TAlgebra > super
Definition grid_function_util.h:1037
GridLevel m_glFrom
Definition grid_function_util.h:1232
void set_conn_viewer_indices(bool b)
sets if .indices file is written or conn viewer
Definition grid_function_util.h:1079
bool m_printConsistent
Definition grid_function_util.h:1229
virtual ~GridFunctionDebugWriter()
Definition grid_function_util.h:1051
void write_algebra_indices_CV(std::string name)
Definition grid_function_util.h:1154
virtual void write_vector_to_conn_viewer(const vector_type &vec, const char *filename)
write vector
Definition grid_function_util.h:1174
void reset()
sets to toplevel on surface
Definition grid_function_util.h:1067
TAlgebra algebra_type
type of matrix
Definition grid_function_util.h:1026
void set_conn_viewer_output(bool b)
sets if writing to conn viewer
Definition grid_function_util.h:1076
algebra_type::matrix_type matrix_type
type of matrix
Definition grid_function_util.h:1032
virtual void update_positions()
Definition grid_function_util.h:1095
void extract_positions(const GridLevel &gridLevel)
reads the positions
Definition grid_function_util.h:1161
void write_vector_to_vtk(const vector_type &vec, const char *filename)
Definition grid_function_util.h:1199
represents numerical solutions on a grid using an algebraic vector
Definition grid_function.h:121
Definition grid_function_util.h:1241
GridFunctionPositionProvider()
Constructor.
Definition grid_function_util.h:1244
GridFunctionPositionProvider(const TGridFunction &u)
Definition grid_function_util.h:1247
void set_reference_grid_function(const TGridFunction &u)
Definition grid_function_util.h:1250
virtual bool get_positions(std::vector< MathVector< TGridFunction::domain_type::dim > > &vec)
Definition grid_function_util.h:1254
const TGridFunction * m_pGridFunc
Definition grid_function_util.h:1263
Definition grid_function_util.h:1359
TGridFunction::domain_type domain_type
Definition grid_function_util.h:1361
algebra_type::vector_type vector_type
Definition grid_function_util.h:1366
GridFunctionVectorWriterDirichlet0()
Constructor.
Definition grid_function_util.h:1371
vector_type::value_type value_type
Definition grid_function_util.h:1367
virtual bool update(vector_type &vec)
Definition grid_function_util.h:1389
void set_level(size_t level)
Definition grid_function_util.h:1375
TGridFunction::approximation_space_type approximation_space_type
Definition grid_function_util.h:1363
size_t m_level
Definition grid_function_util.h:1415
SmartPtr< IConstraint< algebra_type > > m_spPostProcess
Definition grid_function_util.h:1414
TGridFunction::algebra_type algebra_type
Definition grid_function_util.h:1365
approximation_space_type * m_pApproxSpace
Definition grid_function_util.h:1413
void init(SmartPtr< IConstraint< algebra_type > > pp, approximation_space_type &approxSpace)
Definition grid_function_util.h:1379
Definition grid_function_util.h:1271
void set_user_data(SmartPtr< UserData< number, domain_type::dim > > userData)
Definition grid_function_util.h:1283
virtual bool update(vector_type &vec)
write vector
Definition grid_function_util.h:1295
GridFunctionVectorWriter()
Constructor.
Definition grid_function_util.h:1279
void set_reference_grid_function(const TGridFunction &u)
Definition grid_function_util.h:1287
TVector vector_type
Definition grid_function_util.h:1275
const TGridFunction * m_pGridFunc
Definition grid_function_util.h:1349
TGridFunction::domain_type domain_type
Definition grid_function_util.h:1274
SmartPtr< UserData< number, domain_type::dim > > m_userData
Definition grid_function_util.h:1350
TVector::value_type value_type
Definition grid_function_util.h:1273
Definition grid_level.h:42
@ TOP
Definition grid_level.h:45
@ SURFACE
Definition grid_level.h:48
@ LEVEL
Definition grid_level.h:48
interface for adjustment of constraints
Definition constraint_interface.h:63
base class for all debug writer
Definition debug_writer.h:244
Interface for providing vertex positions.
Definition debug_writer.h:46
base class for all vector debug writer
Definition debug_writer.h:118
std::string get_base_dir()
Definition debug_writer.h:192
void compose_file_path(std::string &path)
composes the path for the files and creates the intermediate directories (up to the base one):
Definition debug_writer.h:210
Interface for modifying a vector (e.g, setting Dirichlet values, ...)
Definition vector_writer.h:42
a mathematical Vector with N entries.
Definition math_vector.h:97
OpenMode
Specifies how file names pointing to non-existing files should be handeld.
Definition matrix_io.h:129
@ EXISTING
Only existing files are valid files (i.e. non-existing file result in error)
Definition matrix_io.h:131
@ NEW
Non-existing files are created with the specified file name.
Definition matrix_io.h:133
Provides I/O functionality for MatrixMarket exchange file format.
Definition matrix_io_mtx.h:84
void write_from(matrix_type &matrix, std::string comment="%Generated with ug4.")
Writes a ug matrix into the associated MatrixMarket exchange file.
Definition matrix_io_mtx.h:287
Definition matrix_operator.h:49
virtual M & get_matrix()
Definition matrix_operator.h:74
Definition periodic_boundary_manager.h:99
bool is_slave(TElem *) const
Definition periodic_boundary_manager_impl.hpp:498
Group of subsets.
Definition subset_group.h:51
size_t size() const
number of subsets in this group
Definition subset_group.h:122
void add(int si)
adds a subset by number to this group
Definition subset_group.cpp:64
@ ALL
Definition surface_view.h:102
Type based UserData.
Definition user_data.h:144
output writer to the VTK file format
Definition vtkoutput.h:150
void print(const char *filename, TFunction &u, int step, number time, bool makeConsistent)
Definition vtkoutput_impl.h:184
Base-class for all vertex-types.
Definition grid_base_objects.h:231
std::string ElementDebugInfo(const Grid &grid, GridObject *e)
Returns a string containing information on the given element.
Definition debug_util.cpp:991
#define PCL_RO_SUM
Definition pcl_methods.h:63
int ProcRank()
returns the rank of the process
Definition pcl_base.cpp:83
int NumProcs()
returns the number of processes
Definition pcl_base.cpp:91
#define PCL_RO_BAND
Definition pcl_methods.h:66
UG_API bool FileExists(const char *filename)
!!! Serial i/o version !!!
Definition file_util.cpp:53
bool FileTypeIs(const char *filename, const char *extension)
!!! Serial i/o version !!!
Definition file_util.cpp:86
#define UG_LOG_ALL_PROCS(msg)
Definition log.h:371
#define UG_ASSERT(expr, msg)
Definition assert.h:70
#define UG_CATCH_THROW(msg)
Definition error.h:64
#define UG_THROW(msg)
Definition error.h:57
#define UG_LOG(msg)
Definition log.h:367
#define UG_COND_THROW(cond, msg)
UG_COND_THROW(cond, msg) : performs a UG_THROW(msg) if cond == true.
Definition error.h:61
double number
Definition types.h:124
void WriteVectorPar(std::string filename, const Vector_type &b, const postype *positions, int dimensions, const Vector_type *compareVec=NULL)
Definition connection_viewer_output.h:425
void WriteMatrixPar(std::string name, const Matrix_type &A, const postype *positions, int dimensions)
Definition connection_viewer_output.h:153
string GetParallelName(string name, const pcl::ProcessCommunicator &pc, bool bWriteHeader)
Definition connection_viewer_output.cpp:51
bool CheckGFforNaN(const TGridFunction *u, size_t fct)
Definition grid_function_util.h:464
bool ReadVector(std::string filename, vector_type &vec, int dim)
Definition grid_function_util.h:859
@ CT_DIRICHLET
Definition ass_tuner.h:59
number SumGFValuesAt(TGridFunction *u, size_t fct)
Definition grid_function_util.h:306
void SaveMatrixForConnectionViewer(TGridFunction &u, MatrixOperator< typename TGridFunction::algebra_type::matrix_type, typename TGridFunction::vector_type > &A, const char *filename)
Definition grid_function_util.h:741
void ScaleGF(SmartPtr< TGridFunction > scaledVecOut, ConstSmartPtr< TGridFunction > vecIn, const std::vector< number > &scalingFactors)
Scales all functions contained in a grid function.
Definition grid_function_util.h:122
void SaveVectorForConnectionViewer(TGridFunction &b, const char *filename)
Definition grid_function_util.h:827
void ExtractPositions(ConstSmartPtr< TDomain > domain, ConstSmartPtr< DoFDistribution > dd, std::vector< MathVector< TDomain::dim > > &vPos)
Definition dof_position_util.cpp:424
void TokenizeTrimString(const string &str, vector< string > &vToken, const char delimiter)
Definition string_util.cpp:83
void SaveMatrixToMTX(const char *filename, MatrixOperator< CPUAlgebra::matrix_type, CPUAlgebra::vector_type > &A, std::string comment="%Generated with ug4.")
Save the assembled matrix of a matrix operator to MatrixMarket format.
Definition grid_function_util.h:761
void WriteVectorCSV(const char *filename, const Vector_type &b, postype *positions, int dimensions)
writes to a file in somewhat SparseMatrix-market format (for connection viewer)
Definition csv_gnuplot_output.h:59
void TokenizeString(const string &str, vector< string > &vToken, const char delimiter)
Definition string_util.cpp:56
void WriteAlgebraIndices(std::string name, ConstSmartPtr< TDomain > domain, ConstSmartPtr< DoFDistribution > dd)
Definition grid_function_util.h:681
void SaveVectorDiffForConnectionViewer(TGridFunction &b, TGridFunction &bCompare, const char *filename)
Definition grid_function_util.h:832
void LoadVector(TGridFunction &u, const char *filename)
Definition grid_function_util.h:917
void SubtractValueFromComponent(SmartPtr< TGridFunction > spGF, size_t fct, number sub)
Definition grid_function_util.h:170
void WriteVectorToConnectionViewer(const char *filename, const typename TFunction::algebra_type::vector_type &b, const TFunction &u, const typename TFunction::algebra_type::vector_type *pCompareVec=NULL)
Definition grid_function_util.h:781
double & BlockRef(T &vec, size_t i)
Definition blocks.h:66
number AverageFunctionDifference(SmartPtr< GridFunction< TDomain, TAlgebra > > spGridFct, std::string subset, std::string fct1, std::string fct2)
Calculates the average of the pointwise difference of two functions on given subset.
Definition grid_function_util.h:979
void AdjustMeanValue(SmartPtr< TGridFunction > spGF, const std::vector< std::string > &vCmp, number mean)
Definition grid_function_util.h:213
@ VOLUME
Definition grid_base_objects.h:63
@ VERTEX
Definition grid_base_objects.h:60
@ EDGE
Definition grid_base_objects.h:61
@ FACE
Definition grid_base_objects.h:62
void WriteMatrixToConnectionViewer(const char *filename, const typename TFunction::algebra_type::matrix_type &A, const TFunction &u)
Definition grid_function_util.h:714
void SaveVectorCSV(TGridFunction &b, const char *filename)
Definition grid_function_util.h:960
static void ScaleGFOnElems(ConstSmartPtr< DoFDistribution > dd, SmartPtr< TGridFunction > vecOut, ConstSmartPtr< TGridFunction > vecIn, const std::vector< number > &vScale)
Definition grid_function_util.h:80
bool CheckGFValuesWithinBounds(ConstSmartPtr< TGridFunction > u, size_t cmp, number lowerBnd, number upperBnd)
Definition grid_function_util.h:578
size_t GetSize(const T &t)
number Integral(SmartPtr< UserData< number, TGridFunction::dim > > spData, TGridFunction &spGridFct, const char *subsets, number time, int quadOrder, std::string quadType)
Definition integrate.h:855
number & DoFRef(TMatrix &mat, const DoFIndex &iInd, const DoFIndex &jInd)
Definition multi_index.h:276
#define PROFILE_FUNC_GROUP(groups)
Definition profiler.h:258
#define PROFILE_FUNC()
Definition profiler.h:257
#define PROGRESS_START(progVarName, dSize, msg)
Definition progress.h:111
#define PROGRESS_UPDATE(progVarName, d)
Definition progress.h:117
SurfaceView::traits< TElem >::const_iterator const_iterator
Definition dof_distribution.h:82