30 #ifndef OOMPH_MESH_AS_GEOMETRIC_OBJECT_HEADER
31 #define OOMPH_MESH_AS_GEOMETRIC_OBJECT_HEADER
35 #include <oomph-lib-config.h>
61 namespace MeshAsGeomObject_Helper
70 SamplePointContainerParameters*& sample_point_container_parameters_pt);
101 sample_point_container_parameters_pt) != 0)
106 sample_point_container_parameters_pt) != 0)
110 #ifdef OOMPH_HAS_CGAL
111 else if (
dynamic_cast<CGALSamplePointContainerParameters*
>(
112 sample_point_container_parameters_pt) != 0)
119 throw OomphLibError(
"Wrong sample_point_container_parameters_pt",
157 if (Communicator_pt != 0)
159 int n_proc = Communicator_pt->nproc();
168 Communicator_pt->mpi_comm());
170 dim[0] = dim_reduce[0];
171 dim[1] = dim_reduce[1];
179 static_cast<unsigned>(dim[1]));
183 std::set<Data*> tmp_geom_data;
189 for (
unsigned e = 0;
e < n_sub_object;
e++)
198 std::ostringstream error_message;
199 error_message <<
"Unable to dynamic cast element: " << std::endl
200 <<
"into a FiniteElement: GeomObject representation is "
217 unsigned ngeom = tmp_geom_data.size();
219 typedef std::set<Data*>::iterator IT;
221 for (IT it = tmp_geom_data.begin(); it != tmp_geom_data.end(); it++)
242 #ifdef OOMPH_HAS_CGAL
244 case UseCGALSamplePointContainer:
247 new CGALSamplePointContainer(sample_point_container_parameters_pt);
254 oomph_info <<
"Sample_point_container_version = "
319 mesh_pt, sample_point_container_parameters_pt);
322 build_it(sample_point_container_parameters_pt);
323 delete sample_point_container_parameters_pt;
332 build_it(sample_point_container_parameters_pt);
376 const bool& use_coordinate_as_initial_guess =
false)
379 if (use_coordinate_as_initial_guess)
382 "Ignoring the use_coordinate_as_initial_guess argument.",
383 "MeshAsGeomObject::locate_zeta()",
422 zeta, sub_geom_object_pt,
s);
423 if (sub_geom_object_pt == 0)
425 std::ostringstream error_message;
426 error_message <<
"Cannot locate zeta ";
427 for (
unsigned i = 0;
i < n_lagrangian;
i++)
429 error_message <<
zeta[
i] <<
" ";
431 error_message << std::endl;
int i
Definition: BiCGSTAB_step_by_step.cpp:9
Array< double, 1, 3 > e(1./3., 0.5, 2.)
NonRefineableBinArray class.
Definition: sample_point_container.h:819
RefineableBinArray class.
Definition: sample_point_container.h:521
Base class for all sample point containers.
Definition: sample_point_container.h:206
virtual void locate_zeta(const Vector< double > &zeta, GeomObject *&sub_geom_object_pt, Vector< double > &s)=0
Definition: elements.h:1313
unsigned dim() const
Definition: elements.h:2611
Definition: geom_objects.h:101
virtual void position(const Vector< double > &zeta, Vector< double > &r) const =0
Parametrised position on object at current time: r(zeta).
void set_nlagrangian_and_ndim(const unsigned &n_lagrangian, const unsigned &n_dim)
Set # of Lagrangian and Eulerian coordinates.
Definition: geom_objects.h:183
unsigned nlagrangian() const
Access function to # of Lagrangian coordinates.
Definition: geom_objects.h:171
Definition: mesh_as_geometric_object.h:93
MeshAsGeomObject()
Empty Constructor.
Definition: mesh_as_geometric_object.h:336
unsigned Sample_point_container_version
Definition: mesh_as_geometric_object.h:284
unsigned sample_point_container_version() const
Definition: mesh_as_geometric_object.h:302
SamplePointContainer * Sample_point_container_pt
Pointer to the sample point container.
Definition: mesh_as_geometric_object.h:270
void build_it(SamplePointContainerParameters *sample_point_container_parameters_pt)
Helper function to actually build the thing.
Definition: mesh_as_geometric_object.h:96
unsigned nelement()
Number of elements in the underlying mesh.
Definition: mesh_as_geometric_object.h:308
void operator=(const MeshAsGeomObject &)=delete
Broken assignment operator.
unsigned ngeom_data() const
How many items of Data does the shape of the object depend on?
Definition: mesh_as_geometric_object.h:351
Vector< FiniteElement * > Sub_geom_object_pt
Internal storage for the elements that constitute the object.
Definition: mesh_as_geometric_object.h:267
FiniteElement * finite_element_pt(const unsigned &e)
Return pointer to e-th finite element.
Definition: mesh_as_geometric_object.h:294
MeshAsGeomObject(Mesh *const &mesh_pt)
Constructor.
Definition: mesh_as_geometric_object.h:314
~MeshAsGeomObject()
Destructor.
Definition: mesh_as_geometric_object.h:339
void locate_zeta(const Vector< double > &zeta, GeomObject *&sub_geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
Definition: mesh_as_geometric_object.h:373
Data * geom_data_pt(const unsigned &j)
Definition: mesh_as_geometric_object.h:358
MeshAsGeomObject(const MeshAsGeomObject &)=delete
Broken copy constructor.
MeshAsGeomObject(SamplePointContainerParameters *sample_point_container_parameters_pt)
Constructor.
Definition: mesh_as_geometric_object.h:328
void position(const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const
Definition: mesh_as_geometric_object.h:409
Mesh * Mesh_pt
Pointer to mesh.
Definition: mesh_as_geometric_object.h:280
void position(const Vector< double > &zeta, Vector< double > &r) const
Definition: mesh_as_geometric_object.h:397
SamplePointContainer * sample_point_container_pt() const
Pointer to the sample point container.
Definition: mesh_as_geometric_object.h:288
void dposition(const Vector< double > &xi, DenseMatrix< double > &drdxi) const
Return the derivative of the position.
Definition: mesh_as_geometric_object.h:443
Vector< Data * > Geom_data_pt
Vector of pointers to Data items that affects the object's shape.
Definition: mesh_as_geometric_object.h:264
bool is_mesh_distributed() const
Boolean to indicate if Mesh has been distributed.
Definition: mesh.h:1588
OomphCommunicator * communicator_pt() const
Definition: mesh.h:1600
FiniteElement * finite_element_pt(const unsigned &e) const
Definition: mesh.h:473
GeneralisedElement *& element_pt(const unsigned long &e)
Return pointer to element e.
Definition: mesh.h:448
unsigned long nnode() const
Return number of nodes in the mesh.
Definition: mesh.h:596
void output(std::ostream &outfile)
Output for all elements.
Definition: mesh.cc:2027
Node *& node_pt(const unsigned long &n)
Return pointer to global node n.
Definition: mesh.h:436
unsigned long nelement() const
Return number of elements in the mesh.
Definition: mesh.h:590
unsigned ndim() const
Return (Eulerian) spatial dimension of the node.
Definition: nodes.h:1054
Definition: sample_point_parameters.h:456
Definition: communicator.h:54
Definition: oomph_definitions.h:222
Definition: oomph_definitions.h:267
Definition: sample_point_parameters.h:322
Definition: sample_point_parameters.h:70
Mesh * mesh_pt() const
Pointer to mesh from whose FiniteElements sample points are created.
Definition: sample_point_parameters.h:92
RealScalar s
Definition: level1_cplx_impl.h:130
EIGEN_STRONG_INLINE const Eigen::CwiseBinaryOp< Eigen::internal::scalar_zeta_op< typename DerivedX::Scalar >, const DerivedX, const DerivedQ > zeta(const Eigen::ArrayBase< DerivedX > &x, const Eigen::ArrayBase< DerivedQ > &q)
Definition: SpecialFunctionsArrayAPI.h:152
unsigned Default_sample_point_container_version
Default sample point container type.
Definition: mesh_as_geometric_object.cc:58
void create_sample_point_container_parameters(Mesh *mesh_pt, SamplePointContainerParameters *&sample_point_container_parameters_pt)
Definition: mesh_as_geometric_object.cc:64
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).
Definition: AnisotropicHookean.h:10
@ UseRefineableBinArray
Definition: sample_point_parameters.h:41
@ UseNonRefineableBinArray
Definition: sample_point_parameters.h:42
OomphInfo oomph_info
Definition: oomph_definitions.cc:319
t
Definition: plotPSD.py:36
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2