Hermes2D
2.0
|
#include <essential_boundary_conditions.h>
Public Member Functions | |
DefaultEssentialBCNonConst (Hermes::vector< std::string > markers_, ExactSolutionScalar< Scalar > *exact_solution) | |
DefaultEssentialBCNonConst (std::string marker, ExactSolutionScalar< Scalar > *exact_solution) | |
virtual Scalar | value (double x, double y, double n_x, double n_y, double t_x, double t_y) const |
EssentialBoundaryCondition < Scalar > ::EssentialBCValueType | get_value_type () const |
Function giving info that u_Essential is a non-constant function. | |
![]() | |
EssentialBoundaryCondition (Hermes::vector< std::string > markers) | |
Default constructor. | |
EssentialBoundaryCondition (std::string marker) | |
virtual | ~EssentialBoundaryCondition () |
Virtual destructor. | |
void | set_current_time (double time) |
Set the current time for time-dependent boundary conditions. | |
double | get_current_time () const |
Get the current time for time-dependent boundary conditions. | |
Public Attributes | |
ExactSolutionScalar< Scalar > * | exact_solution |
Additional Inherited Members | |
![]() | |
enum | EssentialBCValueType { BC_FUNCTION, BC_CONST } |
Types of description of boundary values, either a function (callback), or a constant. | |
![]() | |
Scalar | value_const |
Special case of a constant function. | |
double | current_time |
Current time. | |
Hermes::vector< std::string > | markers |
Markers. | |
Class representing non-constant essential boundary condition for Scalar approximation. Typical usage - this example is a non-const Dirichlet boundary condition for the incompressible Navier-Stokes equations. class MyEssentialBCNonConst : public DefaultEssentialBCNonConst<double> { public: // Constructor with multiple markers, setting velocity at inlet(vel_inlet), domain height(H) and startup time(startup_time) - all parameters are of this example - DERIVED - class. MyEssentialBCNonConst(Hermes::vector<std::string> markers, double vel_inlet, double H, double startup_time) : EssentialBoundaryCondition<double>(markers), vel_inlet(vel_inlet), H(H), startup_time(startup_time) {};
// VERY IMPORTANT - overriding the method of the base class (DefaultEssentialBCNonConst::value) with a custom implementation. // NOTE - one can use the top-level base class (EssentialBoundaryCondition)'s methods for handling the time variable for time-dependent problems: get_current_time(). // NOTE - the 'virtual' keyword is not here anymore - because we will not need to further derive from this class and override this method. double value(double x, double y, double n_x, double n_y, double t_x, double t_y) const { double val_y = vel_inlet * y*(H-y) / (H/2.)/(H/2.); if (get_current_time() <= startup_time) return val_y * get_current_time()/startup_time; else return val_y; };
protected: // Members of MyEssentialBCNonConst. double vel_inlet; double H; double startup_time; };
Definition at line 131 of file essential_boundary_conditions.h.
|
virtual |
Represents a function prescribed on the boundary. Gets the boundary point coordinate as well as the normal and tangential vectors.
[in] | x | x-coordinate of the point where the value is evaluated. |
[in] | y | y-coordinate of the point where the value is evaluated. |
[in] | n_x | the x-component of the unit outer normal. |
[in] | n_y | the y-component of the unit outer normal. |
[in] | t_x | the x-component of the tangent(perpendicular to normal). |
[in] | t_y | the y-component of the tangent(perpendicular to normal). |
Implements Hermes::Hermes2D::EssentialBoundaryCondition< Scalar >.
Definition at line 94 of file essential_boundary_conditions.cpp.