GetFEM  5.4.3
getfem_models.h File Reference

Model representation in Getfem. More...

Go to the source code of this file.

Classes

class  getfem::model
 `‘Model’' variables store the variables, the data and the description of a model. More...
 
class  getfem::virtual_time_scheme
 The time integration scheme object provides the necessary methods for the model object to apply a time integration scheme to an evolutionnary problem. More...
 
class  getfem::virtual_dispatcher
 The time dispatcher object modify the result of a brick in order to apply a time integration scheme. More...
 
class  getfem::virtual_brick
 The virtual brick has to be derived to describe real model bricks. More...
 

Namespaces

 getfem
 GEneric Tool for Finite Element Methods.
 

Typedefs

typedef std::shared_ptr< const virtual_brick > getfem::pbrick
 type of pointer on a brick
 

Functions

bool getfem::is_old (const std::string &name)
 Does the variable have Old_ prefix.
 
std::string getfem::no_old_prefix_name (const std::string &name)
 Strip the variable name from prefix Old_ if it has one.
 
void APIDECL getfem::add_theta_method_dispatcher (model &md, dal::bit_vector ibricks, const std::string &THETA)
 Add a theta-method time dispatcher to a list of bricks. More...
 
void APIDECL getfem::velocity_update_for_order_two_theta_method (model &md, const std::string &U, const std::string &V, const std::string &pdt, const std::string &ptheta)
 Function which udpate the velocity $v^{n+1}$ after the computation of the displacement $u^{n+1}$ and before the next iteration. More...
 
void APIDECL getfem::add_midpoint_dispatcher (model &md, dal::bit_vector ibricks)
 Add a midpoint time dispatcher to a list of bricks. More...
 
void APIDECL getfem::velocity_update_for_Newmark_scheme (model &md, size_type id2dt2b, const std::string &U, const std::string &V, const std::string &pdt, const std::string &ptwobeta, const std::string &pgamma)
 Function which udpate the velocity $v^{n+1}$ after the computation of the displacement $u^{n+1}$ and before the next iteration. More...
 
size_type APIDECL getfem::add_linear_term (model &md, const mesh_im &mim, const std::string &expr, size_type region=size_type(-1), bool is_sym=false, bool is_coercive=false, const std::string &brickname="", bool return_if_nonlin=false)
 Add a term given by the weak form language expression expr which will be assembled in region region and with the integration method mim. More...
 
size_type APIDECL getfem::add_nonlinear_term (model &md, const mesh_im &mim, const std::string &expr, size_type region=size_type(-1), bool is_sym=false, bool is_coercive=false, const std::string &brickname="")
 Add a nonlinear term given by the weak form language expression expr which will be assembled in region region and with the integration method mim. More...
 
size_type APIDECL getfem::add_source_term (model &md, const mesh_im &mim, const std::string &expr, size_type region=size_type(-1), const std::string &brickname=std::string(), const std::string &directvarname=std::string(), const std::string &directdataname=std::string(), bool return_if_nonlin=false)
 Add a source term given by the assembly string expr which will be assembled in region region and with the integration method mim. More...
 
size_type APIDECL getfem::add_linear_twodomain_term (model &md, const mesh_im &mim, const std::string &expr, size_type region, const std::string &secondary_domain, bool is_sym=false, bool is_coercive=false, const std::string &brickname="", bool return_if_nonlin=false)
 Adds a linear term given by a weak form language expression like add_linear_term function but for an integration on a direct product of two domains, a first specfied by mim and region and a second one by secondary_domain which has to be declared first into the model.
 
size_type APIDECL getfem::add_nonlinear_twodomain_term (model &md, const mesh_im &mim, const std::string &expr, size_type region, const std::string &secondary_domain, bool is_sym=false, bool is_coercive=false, const std::string &brickname="")
 Adds a nonlinear term given by a weak form language expression like add_nonlinear_term function but for an integration on a direct product of two domains, a first specfied by mim and region and a second one by secondary_domain which has to be declared first into the model.
 
size_type APIDECL getfem::add_twodomain_source_term (model &md, const mesh_im &mim, const std::string &expr, size_type region, const std::string &secondary_domain, const std::string &brickname=std::string(), const std::string &directvarname=std::string(), const std::string &directdataname=std::string(), bool return_if_nonlin=false)
 Adds a source term given by a weak form language expression like add_source_term function but for an integration on a direct product of two domains, a first specfied by mim and region and a second one by secondary_domain which has to be declared first into the model.
 
size_type APIDECL getfem::add_Laplacian_brick (model &md, const mesh_im &mim, const std::string &varname, size_type region=size_type(-1))
 Add a Laplacian term on the variable varname (in fact with a minus : :math:-\text{div}(\nabla u)). More...
 
size_type APIDECL getfem::add_generic_elliptic_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr, size_type region=size_type(-1))
 Add an elliptic term on the variable varname. More...
 
size_type APIDECL getfem::add_source_term_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr, size_type region=size_type(-1), const std::string &directdataname=std::string())
 Add a source term on the variable varname. More...
 
size_type APIDECL getfem::add_normal_source_term_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr, size_type region)
 Add a source term on the variable varname on a boundary region. More...
 
size_type APIDECL getfem::add_Dirichlet_condition_with_simplification (model &md, const std::string &varname, size_type region, const std::string &dataname=std::string())
 Add a (simple) Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, const std::string &multname, size_type region, const std::string &dataname=std::string())
 Add a Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, const mesh_fem &mf_mult, size_type region, const std::string &dataname=std::string())
 Same function as the previous one but the multipliers variable will be declared to the brick by the function. More...
 
size_type APIDECL getfem::add_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, dim_type degree, size_type region, const std::string &dataname=std::string())
 Same function as the previous one but the mf_mult parameter is replaced by degree. More...
 
const APIDECL std::string & getfem::mult_varname_Dirichlet (model &md, size_type ind_brick)
 When ind_brick is the index of a Dirichlet brick with multiplier on the model md, the function return the name of the multiplier variable. More...
 
size_type APIDECL getfem::add_Dirichlet_condition_with_penalization (model &md, const mesh_im &mim, const std::string &varname, scalar_type penalization_coeff, size_type region, const std::string &dataname=std::string(), const mesh_fem *mf_mult=0)
 Add a Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_Dirichlet_condition_with_Nitsche_method (model &md, const mesh_im &mim, const std::string &varname, const std::string &Neumannterm, const std::string &datagamma0, size_type region, scalar_type theta=scalar_type(0), const std::string &datag=std::string())
 Add a Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_normal_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, const std::string &multname, size_type region, const std::string &dataname=std::string())
 Add a Dirichlet condition to the normal component of the vector (or tensor) valued variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_normal_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, const mesh_fem &mf_mult, size_type region, const std::string &dataname=std::string())
 Same function as the previous one but the multipliers variable will be declared to the brick by the function. More...
 
size_type APIDECL getfem::add_normal_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, dim_type degree, size_type region, const std::string &dataname=std::string())
 Same function as the previous one but the mf_mult parameter is replaced by degree. More...
 
size_type APIDECL getfem::add_normal_Dirichlet_condition_with_penalization (model &md, const mesh_im &mim, const std::string &varname, scalar_type penalization_coeff, size_type region, const std::string &dataname=std::string(), const mesh_fem *mf_mult=0)
 Add a Dirichlet condition to the normal component of the vector (or tensor) valued variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_normal_Dirichlet_condition_with_Nitsche_method (model &md, const mesh_im &mim, const std::string &varname, const std::string &Neumannterm, const std::string &datagamma0, size_type region, scalar_type theta=scalar_type(0), const std::string &datag=std::string())
 Add a Dirichlet condition on the normal component of the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_pointwise_constraints_with_penalization (model &md, const std::string &varname, scalar_type penalisation_coeff, const std::string &dataname_pt, const std::string &dataname_unitv=std::string(), const std::string &dataname_val=std::string())
 Add some pointwise constraints on the variable varname thanks to a penalization. More...
 
size_type APIDECL getfem::add_pointwise_constraints_with_given_multipliers (model &md, const std::string &varname, const std::string &multname, const std::string &dataname_pt, const std::string &dataname_unitv=std::string(), const std::string &dataname_val=std::string())
 Add some pointwise constraints on the variable varname using a given multiplier multname. More...
 
size_type APIDECL getfem::add_pointwise_constraints_with_multipliers (model &md, const std::string &varname, const std::string &dataname_pt, const std::string &dataname_unitv=std::string(), const std::string &dataname_val=std::string())
 Add some pointwise constraints on the variable varname using multiplier. More...
 
void APIDECL getfem::change_penalization_coeff (model &md, size_type ind_brick, scalar_type penalisation_coeff)
 Change the penalization coefficient of a Dirichlet condition with penalization brick. More...
 
size_type APIDECL getfem::add_generalized_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, const std::string &multname, size_type region, const std::string &dataname, const std::string &Hname)
 Add a generalized Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_generalized_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, const mesh_fem &mf_mult, size_type region, const std::string &dataname, const std::string &Hname)
 Same function as the preceeding one but the multipliers variable will be declared to the brick by the function. More...
 
size_type APIDECL getfem::add_generalized_Dirichlet_condition_with_multipliers (model &md, const mesh_im &mim, const std::string &varname, dim_type degree, size_type region, const std::string &dataname, const std::string &Hname)
 Same function as the preceeding one but the mf_mult parameter is replaced by degree. More...
 
size_type APIDECL getfem::add_generalized_Dirichlet_condition_with_penalization (model &md, const mesh_im &mim, const std::string &varname, scalar_type penalization_coeff, size_type region, const std::string &dataname, const std::string &Hname, const mesh_fem *mf_mult=0)
 Add a Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_generalized_Dirichlet_condition_with_Nitsche_method (model &md, const mesh_im &mim, const std::string &varname, const std::string &Neumannterm, const std::string &datagamma0, size_type region, scalar_type theta, const std::string &datag, const std::string &dataH)
 Add a Dirichlet condition on the variable varname and the mesh region region. More...
 
size_type APIDECL getfem::add_Helmholtz_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr, size_type region=size_type(-1))
 Add a Helmoltz brick to the model. More...
 
size_type APIDECL getfem::add_Fourier_Robin_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr, size_type region)
 Add a Fourier-Robin brick to the model. More...
 
template<typename VECT >
void getfem::set_private_data_rhs (model &md, size_type indbrick, const VECT &L)
 For some specific bricks having an internal right hand side vector (explicit bricks: 'constraint brick' and 'explicit rhs brick'), set this rhs.
 
template<typename MAT >
void getfem::set_private_data_matrix (model &md, size_type indbrick, const MAT &B)
 For some specific bricks having an internal sparse matrix (explicit bricks: 'constraint brick' and 'explicit matrix brick'), set this matrix. More...
 
template<typename MAT , typename VECT >
size_type getfem::add_constraint_with_penalization (model &md, const std::string &varname, scalar_type penalisation_coeff, const MAT &B, const VECT &L)
 Add an additional explicit penalized constraint on the variable varname. More...
 
template<typename MAT , typename VECT >
size_type getfem::add_constraint_with_multipliers (model &md, const std::string &varname, const std::string &multname, const MAT &B, const VECT &L)
 Add an additional explicit constraint on the variable varname thank to a multiplier multname peviously added to the model (should be a fixed size variable). More...
 
template<typename MAT >
size_type getfem::add_explicit_matrix (model &md, const std::string &varname1, const std::string &varname2, const MAT &B, bool issymmetric=false, bool iscoercive=false)
 Add a brick reprenting an explicit matrix to be added to the tangent linear system relatively to the variables 'varname1' and 'varname2'. More...
 
template<typename VECT >
size_type getfem::add_explicit_rhs (model &md, const std::string &varname, const VECT &L)
 Add a brick representing an explicit right hand side to be added to the right hand side of the tangent linear system relatively to the variable 'varname'. More...
 
size_type APIDECL getfem::add_isotropic_linearized_elasticity_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataname_lambda, const std::string &dataname_mu, size_type region=size_type(-1), const std::string &dataname_preconstraint=std::string())
 Linear elasticity brick ( $ \int \sigma(u):\varepsilon(v) $ ). More...
 
size_type APIDECL getfem::add_isotropic_linearized_elasticity_pstrain_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &data_E, const std::string &data_nu, size_type region)
 Linear elasticity brick ( $ \int \sigma(u):\varepsilon(v) $ ). More...
 
size_type APIDECL getfem::add_isotropic_linearized_elasticity_pstress_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &data_E, const std::string &data_nu, size_type region)
 Linear elasticity brick ( $ \int \sigma(u):\varepsilon(v) $ ). More...
 
template<class VECTVM >
void getfem::compute_isotropic_linearized_Von_Mises_or_Tresca (model &md, const std::string &varname, const std::string &dataname_lambda, const std::string &dataname_mu, const mesh_fem &mf_vm, VECTVM &VM, bool tresca)
 Compute the Von-Mises stress or the Tresca stress of a field (only valid for isotropic linearized elasticity in 3D) Parametrized by Lame coefficients.
 
void APIDECL getfem::compute_isotropic_linearized_Von_Mises_pstrain (model &md, const std::string &varname, const std::string &data_E, const std::string &data_nu, const mesh_fem &mf_vm, model_real_plain_vector &VM)
 Compute the Von-Mises stress of a displacement field for isotropic linearized elasticity in 3D or in 2D with plane strain assumption. More...
 
void APIDECL getfem::compute_isotropic_linearized_Von_Mises_pstress (model &md, const std::string &varname, const std::string &data_E, const std::string &data_nu, const mesh_fem &mf_vm, model_real_plain_vector &VM)
 Compute the Von-Mises stress of a displacement field for isotropic linearized elasticity in 3D or in 2D with plane stress assumption. More...
 
size_type APIDECL getfem::add_linear_incompressibility (model &md, const mesh_im &mim, const std::string &varname, const std::string &multname_pressure, size_type region=size_type(-1), const std::string &dataexpr_penal_coeff=std::string())
 Mixed linear incompressibility condition brick. More...
 
size_type APIDECL getfem::add_mass_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr_rho=std::string(), size_type region=size_type(-1))
 Mass brick ( $ \int \rho u.v $ ). More...
 
size_type APIDECL getfem::add_lumped_mass_for_first_order_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataexpr_rho=std::string(), size_type region=size_type(-1))
 Lumped mass brick for first order. More...
 
size_type APIDECL getfem::add_basic_d_on_dt_brick (model &md, const mesh_im &mim, const std::string &varname, const std::string &dataname_dt, const std::string &dataname_rho=std::string(), size_type region=size_type(-1))
 Basic d/dt brick ( $ \int \rho ((u^{n+1}-u^n)/dt).v $ ). More...
 
size_type APIDECL getfem::add_basic_d2_on_dt2_brick (model &md, const mesh_im &mim, const std::string &varnameU, const std::string &datanameV, const std::string &dataname_dt, const std::string &dataname_alpha, const std::string &dataname_rho=std::string(), size_type region=size_type(-1))
 Basic d2/dt2 brick ( $ \int \rho ((u^{n+1}-u^n)/(\alpha dt^2) - v^n/(\alpha dt) ).w $ ). More...
 

Variables

const auto getfem::PREFIX_OLD = std::string{"Old_"}
 A prefix to refer to the previous version of a variable.
 

Detailed Description

Model representation in Getfem.

Author
Yves Renard Yves..nosp@m.Rena.nosp@m.rd@in.nosp@m.sa-l.nosp@m.yon.f.nosp@m.r
Date
March 21, 2009.

Definition in file getfem_models.h.