![]() |
|
#include <topologically_rectangular_domain.h>
Public Types | |
typedef void(* | BoundaryFctPt) (const double &s, Vector< double > &r) |
Public Member Functions | |
TopologicallyRectangularDomain (BoundaryFctPt north_pt, BoundaryFctPt east_pt, BoundaryFctPt south_pt, BoundaryFctPt west_pt) | |
TopologicallyRectangularDomain (const double &l_x, const double &l_y) | |
TopologicallyRectangularDomain (const double &x_min, const double &x_max, const double &y_min, const double &y_max) | |
TopologicallyRectangularDomain (const TopologicallyRectangularDomain &)=delete | |
Broken copy constructor. More... | |
void | operator= (const TopologicallyRectangularDomain &)=delete |
Broken assignment operator. More... | |
~TopologicallyRectangularDomain () | |
Destructor - empty; clean up done in base class. More... | |
void | set_boundary_derivative_functions (BoundaryFctPt d_north_pt, BoundaryFctPt d_east_pt, BoundaryFctPt d_south_pt, BoundaryFctPt d_west_pt) |
void | set_boundary_second_derivative_functions (BoundaryFctPt d2_north_pt, BoundaryFctPt d2_east_pt, BoundaryFctPt d2_south_pt, BoundaryFctPt d2_west_pt) |
void | macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
void | dmacro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
void | d2macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
![]() | |
Domain () | |
Constructor. More... | |
Domain (const Domain &)=delete | |
Broken copy constructor. More... | |
void | operator= (const Domain &)=delete |
Broken assignment operator. More... | |
virtual | ~Domain () |
MacroElement * | macro_element_pt (const unsigned &i) |
Access to i-th macro element. More... | |
unsigned | nmacro_element () |
Number of macro elements in domain. More... | |
void | output (const std::string &filename, const unsigned &nplot) |
Output macro elements. More... | |
void | output (std::ostream &outfile, const unsigned &nplot) |
Output macro elements. More... | |
virtual void | macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
void | macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
void | output_macro_element_boundaries (const std::string &filename, const unsigned &nplot) |
Output all macro element boundaries as tecplot zones. More... | |
void | output_macro_element_boundaries (std::ostream &outfile, const unsigned &nplot) |
Output all macro element boundaries as tecplot zones. More... | |
virtual void | dmacro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
void | dmacro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
virtual void | d2macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
void | d2macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f) |
Private Member Functions | |
void | r_N (const Vector< double > &s, Vector< double > &f) |
void | r_E (const Vector< double > &s, Vector< double > &f) |
void | r_S (const Vector< double > &s, Vector< double > &f) |
void | r_W (const Vector< double > &s, Vector< double > &f) |
void | dr_N (const Vector< double > &s, Vector< double > &dr) |
void | dr_E (const Vector< double > &s, Vector< double > &dr) |
void | dr_S (const Vector< double > &s, Vector< double > &dr) |
void | dr_W (const Vector< double > &s, Vector< double > &dr) |
void | d2r_N (const Vector< double > &s, Vector< double > &d2r) |
void | d2r_E (const Vector< double > &s, Vector< double > &d2r) |
void | d2r_S (const Vector< double > &s, Vector< double > &d2r) |
void | d2r_W (const Vector< double > &s, Vector< double > &d2r) |
Additional Inherited Members | |
![]() | |
Vector< MacroElement * > | Macro_element_pt |
Vector of pointers to macro elements. More... | |
Topologically Rectangular Domain - a domain dexcribing a topologically rectangular problem - primarily contains functions to access the position of the global boundary relative to the macro element boundary, as well as first and second derivates of the global boundary wrt the macro element boundary NOTE : suitable for HermiteElementQuadMesh
typedef void(* oomph::TopologicallyRectangularDomain::BoundaryFctPt) (const double &s, Vector< double > &r) |
boundary function pointer - for a given boundary takes the macro element coordinate position on that boundary and for that position returns the global coordinates (x) coordinates, or derivatives - dx_i/dm_t or second derivatives d2x_i/dm_t^2
oomph::TopologicallyRectangularDomain::TopologicallyRectangularDomain | ( | BoundaryFctPt | north_pt, |
BoundaryFctPt | east_pt, | ||
BoundaryFctPt | south_pt, | ||
BoundaryFctPt | west_pt | ||
) |
Constructor - domain boundaries are described with four boundary function pointers describing the topology of the north, east, south, and west boundaries
References d2East_boundary_fn_pt, d2North_boundary_fn_pt, d2South_boundary_fn_pt, d2West_boundary_fn_pt, dEast_boundary_fn_pt, dNorth_boundary_fn_pt, dSouth_boundary_fn_pt, dWest_boundary_fn_pt, East_boundary_fn_pt, oomph::Domain::Macro_element_pt, North_boundary_fn_pt, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, South_boundary_fn_pt, and West_boundary_fn_pt.
oomph::TopologicallyRectangularDomain::TopologicallyRectangularDomain | ( | const double & | l_x, |
const double & | l_y | ||
) |
Constructor - takes length of domain in x and y direction as arguements. Assumes domain is rectangular, and the south west (lower left) corner is at 0,0.
References d2East_boundary_fn_pt, d2North_boundary_fn_pt, d2South_boundary_fn_pt, d2West_boundary_fn_pt, dEast_boundary_fn_pt, dNorth_boundary_fn_pt, dSouth_boundary_fn_pt, dWest_boundary_fn_pt, East_boundary_fn_pt, oomph::Domain::Macro_element_pt, North_boundary_fn_pt, South_boundary_fn_pt, West_boundary_fn_pt, x_north_east, and x_south_west.
oomph::TopologicallyRectangularDomain::TopologicallyRectangularDomain | ( | const double & | x_min, |
const double & | x_max, | ||
const double & | y_min, | ||
const double & | y_max | ||
) |
Constructor - takes the minimum and maximum coordinates of the of an assumed rectanguler domain in the x and y direction
References d2East_boundary_fn_pt, d2North_boundary_fn_pt, d2South_boundary_fn_pt, d2West_boundary_fn_pt, dEast_boundary_fn_pt, dNorth_boundary_fn_pt, dSouth_boundary_fn_pt, dWest_boundary_fn_pt, East_boundary_fn_pt, oomph::Domain::Macro_element_pt, North_boundary_fn_pt, South_boundary_fn_pt, West_boundary_fn_pt, x_north_east, and x_south_west.
|
delete |
Broken copy constructor.
|
inline |
|
virtual |
returns the second derivates of the global coordinate position (f) wrt to the macro element coordinate at macro macro element position s on boundary i_direct (e.g. N/S/W/E in 2D) at time t (no time dependence)
Reimplemented from oomph::Domain.
References d2r_E(), d2r_N(), d2r_S(), d2r_W(), Global_Physical_Variables::E, f(), N, OOMPH_EXCEPTION_LOCATION, s, oomph::QuadTreeNames::S, and oomph::QuadTreeNames::W.
|
private |
takes the macro element coordinate position along the east boundary and returns the second derivates of the global coordinates with respect to the boundary
References d2East_boundary_fn_pt, dEast_boundary_fn_pt, e(), East_boundary_fn_pt, and s.
Referenced by d2macro_element_boundary().
|
private |
takes the macro element coordinate position along the north boundary and returns the second derivates of the global coordinates with respect to the boundary
References d2North_boundary_fn_pt, dNorth_boundary_fn_pt, e(), North_boundary_fn_pt, and s.
Referenced by d2macro_element_boundary().
|
private |
takes the macro element coordinate position along the south boundary and returns the second derivates of the global coordinates with respect to the boundary
References d2South_boundary_fn_pt, dSouth_boundary_fn_pt, e(), s, and South_boundary_fn_pt.
Referenced by d2macro_element_boundary().
|
private |
takes the macro element coordinate position along the west boundary and returns the second derivates of the global coordinates with respect to the boundary
References d2West_boundary_fn_pt, dWest_boundary_fn_pt, e(), s, and West_boundary_fn_pt.
Referenced by d2macro_element_boundary().
|
virtual |
returns the derivates of the global coordinate position (f) wrt to the macro element coordinate at macro macro element position s on boundary i_direct (e.g. N/S/W/E in 2D) at time t (no time dependence)
Reimplemented from oomph::Domain.
References dr_E(), dr_N(), dr_S(), dr_W(), Global_Physical_Variables::E, f(), N, OOMPH_EXCEPTION_LOCATION, s, oomph::QuadTreeNames::S, and oomph::QuadTreeNames::W.
|
private |
takes the macro element coordinate position along the E boundary and returns the derivates of the global coordinates with respect to the boundary
References dEast_boundary_fn_pt, e(), East_boundary_fn_pt, s, x_north_east, and x_south_west.
Referenced by dmacro_element_boundary().
|
private |
takes the macro element coordinate position along the north boundary and returns the derivates of the global coordinates with respect to the boundary
References dNorth_boundary_fn_pt, e(), North_boundary_fn_pt, s, x_north_east, and x_south_west.
Referenced by dmacro_element_boundary().
|
private |
takes the macro element coordinate position along the south boundary and returns the derivates of the global coordinates with respect to the boundary
References dSouth_boundary_fn_pt, e(), s, South_boundary_fn_pt, x_north_east, and x_south_west.
Referenced by dmacro_element_boundary().
|
private |
takes the macro element coordinate position along the W boundary and returns the derivates of the global coordinates with respect to the boundary
References dWest_boundary_fn_pt, e(), s, West_boundary_fn_pt, x_north_east, and x_south_west.
Referenced by dmacro_element_boundary().
|
virtual |
returns the global coordinate position (f) of macro element position s on boundary i_direct (e.g. N/S/W/E in 2D) at time t (no time dependence)
Implements oomph::Domain.
References Global_Physical_Variables::E, f(), N, OOMPH_EXCEPTION_LOCATION, r_E(), r_N(), r_S(), r_W(), s, oomph::QuadTreeNames::S, and oomph::QuadTreeNames::W.
|
delete |
Broken assignment operator.
|
private |
takes the macro element coordinate position along the east boundary and returns the global coordinate position along that boundary
References East_boundary_fn_pt, f(), s, x_north_east, and x_south_west.
Referenced by macro_element_boundary().
|
private |
takes the macro element coordinate position along the north boundary and returns the global coordinate position along that boundary
References f(), North_boundary_fn_pt, s, x_north_east, and x_south_west.
Referenced by macro_element_boundary().
|
private |
takes the macro element coordinate position along the south boundary and returns the global coordinate position along that boundary
References f(), s, South_boundary_fn_pt, x_north_east, and x_south_west.
Referenced by macro_element_boundary().
|
private |
takes the macro element coordinate position along the west boundary and returns the global coordinate position along that boundary access down boundary function pointer
References f(), s, West_boundary_fn_pt, x_north_east, and x_south_west.
Referenced by macro_element_boundary().
void oomph::TopologicallyRectangularDomain::set_boundary_derivative_functions | ( | BoundaryFctPt | d_north_pt, |
BoundaryFctPt | d_east_pt, | ||
BoundaryFctPt | d_south_pt, | ||
BoundaryFctPt | d_west_pt | ||
) |
allows the boundary derivate function pointers to be set. To compute the derivatives of the problem domain global coordinates (x_i) wrt the macro element coordinates (m_i), dx_i/dm_t is required along the domain boundaries (where dm_t is the macro element coordinate tangential to the domain boundary). The derivatives dx_i/dm_t can either be prescribed with function pointers, or if the function pointers are not provided then dx_i/dm_t is computed with finite differencing. Note - these functions are only required for domains contructed with boundary function pointers
References dEast_boundary_fn_pt, dNorth_boundary_fn_pt, dSouth_boundary_fn_pt, and dWest_boundary_fn_pt.
void oomph::TopologicallyRectangularDomain::set_boundary_second_derivative_functions | ( | BoundaryFctPt | d2_north_pt, |
BoundaryFctPt | d2_east_pt, | ||
BoundaryFctPt | d2_south_pt, | ||
BoundaryFctPt | d2_west_pt | ||
) |
allows the boundary second derivate function pointers to be set. To compute the second derivatives of the problem domain global coordinates (x_i) wrt the macro element coordinates (m_i), d2x_i/dm_t^2 is required along the domain boundaries (where dm_t is the macro element coordinate tangential to the domain boundary). The derivatives d2x_i/dm_t^2 can either be prescribed with function pointers, or if the function pointers are not provided then dx_i/dm_t is computed with finite differencing. Note - these functions are only required for domains contructed with boundary function pointers
References d2East_boundary_fn_pt, d2North_boundary_fn_pt, d2South_boundary_fn_pt, and d2West_boundary_fn_pt.
|
private |
Function pointer to prescribe the second derivates of global coordinates wrt to the macro element coordinate tangential to the east boundary
Referenced by d2r_E(), set_boundary_second_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the second derivates of global coordinates wrt to the macro element coordinate tangential to the north boundary
Referenced by d2r_N(), set_boundary_second_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the second derivates of global coordinates wrt to the macro element coordinate tangential to the south boundary
Referenced by d2r_S(), set_boundary_second_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the second derivates of global coordinates wrt to the macro element coordinate tangential to the west boundary
Referenced by d2r_W(), set_boundary_second_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the derivates of global coordinates wrt to the macro element coordinate tangential to the east boundary
Referenced by d2r_E(), dr_E(), set_boundary_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the derivates of global coordinates wrt to the macro element coordinate tangential to the north boundary
Referenced by d2r_N(), dr_N(), set_boundary_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the derivates of global coordinates wrt to the macro element coordinate tangential to the south boundary
Referenced by d2r_S(), dr_S(), set_boundary_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the derivates of global coordinates wrt to the macro element coordinate tangential to the west boundary
Referenced by d2r_W(), dr_W(), set_boundary_derivative_functions(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the east boundary of this topologically rectangular domain
Referenced by d2r_E(), dr_E(), r_E(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the north boundary of this topologically rectangular domain
Referenced by d2r_N(), dr_N(), r_N(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the north boundary of this topologically rectangular domain
Referenced by d2r_S(), dr_S(), r_S(), and TopologicallyRectangularDomain().
|
private |
Function pointer to prescribe the west boundary of this topologically rectangular domain
Referenced by d2r_W(), dr_W(), r_W(), and TopologicallyRectangularDomain().