getfem  5.4.1
About: The Getfem++ project focuses on the development of a generic and efficient C++ library for finite element methods elementary computations.
  Fossies Dox: getfem-5.4.1.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

Assembly routines

Functions

template<class MAT , class VECT >
void getfem::old_asm_stiffness_matrix_for_linear_elasticity (const MAT &RM_, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT &LAMBDA, const VECT &MU, const mesh_region &rg=mesh_region::all_convexes())
 
template<class MAT , class VECT >
void getfem::old_asm_stiffness_matrix_for_homogeneous_linear_elasticity (const MAT &RM_, const mesh_im &mim, const mesh_fem &mf, const VECT &LAMBDA, const VECT &MU, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VEC >
scalar_type getfem::asm_L2_norm (const mesh_im &mim, const mesh_fem &mf, const VEC &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_L2_dist (const mesh_im &mim, const mesh_fem &mf1, const VEC1 &U1, const mesh_fem &mf2, const VEC2 &U2, mesh_region rg=mesh_region::all_convexes())
 
template<typename VEC >
scalar_type getfem::asm_H1_semi_norm (const mesh_im &mim, const mesh_fem &mf, const VEC &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_H1_semi_dist (const mesh_im &mim, const mesh_fem &mf1, const VEC1 &U1, const mesh_fem &mf2, const VEC2 &U2, mesh_region rg=mesh_region::all_convexes())
 
template<typename VEC >
scalar_type getfem::asm_H1_norm (const mesh_im &mim, const mesh_fem &mf, const VEC &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_H1_dist (const mesh_im &mim, const mesh_fem &mf1, const VEC1 &U1, const mesh_fem &mf2, const VEC2 &U2, mesh_region rg=mesh_region::all_convexes())
 
template<typename VEC >
scalar_type getfem::asm_H2_semi_norm (const mesh_im &mim, const mesh_fem &mf, const VEC &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VEC >
scalar_type getfem::asm_H2_norm (const mesh_im &mim, const mesh_fem &mf, const VEC &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_H2_dist (const mesh_im &mim, const mesh_fem &mf1, const VEC1 &U1, const mesh_fem &mf2, const VEC2 &U2, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT >
void getfem::asm_mass_matrix (const MAT &M, const mesh_im &mim, const mesh_fem &mf1, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_mass_matrix_param (const MAT &M, const mesh_im &mim, const mesh_fem &mf1, const mesh_fem &mf2, const mesh_fem &mf_data, const VECT &A, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_mass_matrix_param (MAT &M, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_data, const VECT &F, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_mass_matrix_homogeneous_param (MAT &M, const mesh_im &mim, const mesh_fem &mf_u, const VECT &F, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT >
void getfem::asm_lumped_mass_matrix_for_first_order (const MAT &M, const mesh_im &mim, const mesh_fem &mf1, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_lumped_mass_matrix_for_first_order_param (MAT &M, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_data, const VECT &F, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 >
void getfem::asm_source_term (const VECT1 &B, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT2 &F, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 >
void getfem::asm_homogeneous_source_term (const VECT1 &B, const mesh_im &mim, const mesh_fem &mf, const VECT2 &F, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 >
void getfem::asm_normal_source_term (VECT1 &B, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT2 &F, const mesh_region &rg)
 
template<typename VECT1 , typename VECT2 >
void getfem::asm_homogeneous_normal_source_term (VECT1 &B, const mesh_im &mim, const mesh_fem &mf, const VECT2 &F, const mesh_region &rg)
 
template<typename MAT , typename VECT >
void getfem::asm_qu_term (MAT &M, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_d, const VECT &Q, const mesh_region &rg)
 
template<class MAT , class VECT >
void getfem::asm_stiffness_matrix_for_linear_elasticity (const MAT &M, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT &LAMBDA, const VECT &MU, const mesh_region &rg=mesh_region::all_convexes())
 
template<class MAT , class VECT >
void getfem::asm_stiffness_matrix_for_homogeneous_linear_elasticity (const MAT &M, const mesh_im &mim, const mesh_fem &mf, const VECT &LAMBDA, const VECT &MU, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_stiffness_matrix_for_linear_elasticity_Hooke (MAT &RM, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT &H, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT >
void getfem::asm_stokes_B (const MAT &B, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_p, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT >
void getfem::asm_stiffness_matrix_for_homogeneous_laplacian (const MAT &M, const mesh_im &mim, const mesh_fem &mf, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT >
void getfem::asm_stiffness_matrix_for_homogeneous_laplacian_componentwise (const MAT &M, const mesh_im &mim, const mesh_fem &mf, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_stiffness_matrix_for_laplacian (MAT &M, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT &A, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_stiffness_matrix_for_scalar_elliptic (MAT &M, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT &A, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_Helmholtz (MAT &M, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_data, const VECT &K_squared, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT >
void getfem::asm_homogeneous_Helmholtz (MAT &M, const mesh_im &mim, const mesh_fem &mf_u, const VECT &K_squared, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT1 , typename VECT2 >
void getfem::asm_dirichlet_constraints (MAT &H, VECT1 &R, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_mult, const mesh_fem &mf_r, const VECT2 &r_data, const mesh_region &region, int version=ASMDIR_BUILDALL)
 
template<typename MAT , typename VECT1 , typename VECT2 , typename VECT3 >
void getfem::asm_generalized_dirichlet_constraints (MAT &H, VECT1 &R, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_h, const mesh_fem &mf_r, const VECT2 &h_data, const VECT3 &r_data, const mesh_region &region, int version=ASMDIR_BUILDALL)
 
template<typename MAT1 , typename MAT2 , typename VECT1 , typename VECT2 >
size_type getfem::Dirichlet_nullspace (const MAT1 &H, MAT2 &NS, const VECT1 &R, VECT2 &U0)
 
template<typename MAT , typename VECT >
void getfem::asm_stiffness_matrix_for_bilaplacian (const MAT &M, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT &A, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 >
void getfem::asm_normal_derivative_source_term (VECT1 &B, const mesh_im &mim, const mesh_fem &mf, const mesh_fem &mf_data, const VECT2 &F, const mesh_region &rg)
 
template<typename MAT , typename VECT1 , typename VECT2 >
void getfem::asm_normal_derivative_dirichlet_constraints (MAT &H, VECT1 &R, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_mult, const mesh_fem &mf_r, const VECT2 &r_data, const mesh_region &rg, bool R_must_be_derivated, int version)
 
template<typename MAT , typename VECT >
void getfem::asm_navier_stokes_tgm (const MAT &M, const mesh_im &mim, const mesh_fem &mf, const VECT &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 >
void getfem::asm_navier_stokes_rhs (const VECT1 &V, const mesh_im &mim, const mesh_fem &mf, const VECT2 &U, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT , typename VECT1 , typename VECT2 >
void getfem::asm_nonlinear_elasticity_tangent_matrix (const MAT &K_, const mesh_im &mim, const getfem::mesh_fem &mf, const VECT1 &U, const getfem::mesh_fem *mf_data, const VECT2 &PARAMS, const abstract_hyperelastic_law &AHL, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 , typename VECT3 >
void getfem::asm_nonlinear_elasticity_rhs (const VECT1 &R_, const mesh_im &mim, const getfem::mesh_fem &mf, const VECT2 &U, const getfem::mesh_fem *mf_data, const VECT3 &PARAMS, const abstract_hyperelastic_law &AHL, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT2 , typename VECT3 >
scalar_type getfem::asm_elastic_strain_energy (const mesh_im &mim, const getfem::mesh_fem &mf, const VECT2 &U, const getfem::mesh_fem *mf_data, const VECT3 &PARAMS, const abstract_hyperelastic_law &AHL, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename MAT1 , typename MAT2 , typename VECT1 , typename VECT2 >
void getfem::asm_nonlinear_incomp_tangent_matrix (const MAT1 &K_, const MAT2 &B_, const mesh_im &mim, const mesh_fem &mf_u, const mesh_fem &mf_p, const VECT1 &U, const VECT2 &P, const mesh_region &rg=mesh_region::all_convexes())
 
template<typename VECT1 , typename VECT2 , typename VECT3 >
void getfem::asm_nonlinear_incomp_rhs (const VECT1 &R_U_, const VECT1 &R_P_, const mesh_im &mim, const getfem::mesh_fem &mf_u, const getfem::mesh_fem &mf_p, const VECT2 &U, const VECT3 &P, const mesh_region &rg=mesh_region::all_convexes())
 

Detailed Description

Function Documentation

◆ asm_dirichlet_constraints()

template<typename MAT , typename VECT1 , typename VECT2 >
void getfem::asm_dirichlet_constraints ( MAT H,
VECT1 &  R,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_mult,
const mesh_fem mf_r,
const VECT2 &  r_data,
const mesh_region region,
int  version = ASMDIR_BUILDALL 
)

Assembly of Dirichlet constraints $ u(x) = r(x) $ in a weak form

\[ \int_{\Gamma} u(x)v(x) = \int_{\Gamma} r(x)v(x) \forall v\]

, where $ v $ is in the space of multipliers corresponding to mf_mult.

size(r_data) = Q * nb_dof(mf_rh);

A simplification can be done when the fem for u and r are the same and when the fem for the multipliers is of same dimension as the one for u. version = |ASMDIR_BUILDH : build H |ASMDIR_BUILDR : build R |ASMDIR_SIMPLIFY : simplify |ASMDIR_BUILDALL : do everything.

Definition at line 1372 of file getfem_assembling.h.

References getfem::asm_mass_matrix(), getfem::asm_source_term(), getfem::ASMDIR_BUILDH, getfem::ASMDIR_BUILDR, getfem::ASMDIR_SIMPLIFY, gmm::clean(), getfem::mesh_fem::convex_index(), getfem::mesh_fem::convex_to_basic_dof(), gmm::default_tol(), getfem::mesh_fem::fem_of_element(), getfem::mesh_region::from_mesh(), getfem::mesh_fem::get_qdim(), GMM_ASSERT1, GMM_TRACE3, GMM_WARNING1, GMM_WARNING2, GMM_WARNING3, H, i, getfem::mesh_fem::ind_basic_dof_of_element(), getfem::mesh_fem::ind_basic_dof_of_face_of_element(), getfem::mesh_fem::is_reduced(), j, gmm::k(), getfem::mesh_im::linked_mesh(), gmm::mat_maxnorm(), getfem::mesh_fem::nb_basic_dof(), getfem::mesh_fem::nb_basic_dof_of_element(), R, getfem::tab_scal_to_vect< CONT >::size(), and v.

◆ asm_elastic_strain_energy()

◆ asm_generalized_dirichlet_constraints()

template<typename MAT , typename VECT1 , typename VECT2 , typename VECT3 >
void getfem::asm_generalized_dirichlet_constraints ( MAT H,
VECT1 &  R,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_h,
const mesh_fem mf_r,
const VECT2 &  h_data,
const VECT3 &  r_data,
const mesh_region region,
int  version = ASMDIR_BUILDALL 
)

Assembly of generalized Dirichlet constraints h(x)u(x) = r(x), where h is a QxQ matrix field (Q == mf_u.get_qdim()), outputs a (under-determined) linear system HU=R.

size(h_data) = Q^2 * nb_dof(mf_rh); size(r_data) = Q * nb_dof(mf_rh);

This function tries hard to make H diagonal or mostly diagonal: this function is able to "simplify" the dirichlet constraints (see below) version = |ASMDIR_BUILDH : build H |ASMDIR_BUILDR : build R |ASMDIR_SIMPLIFY : simplify |ASMDIR_BUILDALL : do everything.

Definition at line 1549 of file getfem_assembling.h.

References getfem::asm_qu_term(), getfem::asm_source_term(), getfem::ASMDIR_BUILDH, getfem::ASMDIR_BUILDR, getfem::ASMDIR_SIMPLIFY, getfem::mesh_fem::basic_dof_on_region(), gmm::clear(), getfem::mesh_fem::convex_index(), getfem::mesh_fem::fem_of_element(), getfem::mesh_region::from_mesh(), getfem::mesh_fem::get_qdim(), GMM_ASSERT1, GMM_WARNING1, H, i, getfem::mesh_fem::ind_basic_dof_of_element(), getfem::mesh_fem::is_reduced(), j, gmm::k(), getfem::mesh_fem::linked_mesh(), getfem::mesh_im::linked_mesh(), getfem::mesh_fem::nb_basic_dof_of_element(), getfem::mesh_fem::nb_dof(), Q, q, R, bgeot::mesh_structure::structure_of_convex(), gmm::sub_matrix(), v, and gmm::vect_dist2_sqr().

Referenced by gf_dirichlet().

◆ asm_H1_dist()

template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_H1_dist ( const mesh_im mim,
const mesh_fem mf1,
const VEC1 &  U1,
const mesh_fem mf2,
const VEC2 &  U2,
mesh_region  rg = mesh_region::all_convexes() 
)
inline

Compute the H1 distance between U1 and U2

Definition at line 354 of file getfem_assembling.h.

References getfem::asm_H1_dist_sqr(), gmm::sqrt(), and U2.

Referenced by bilaplacian_crack_problem::compute_error(), crack_mindlin_problem::compute_error(), and main().

◆ asm_H1_norm()

template<typename VEC >
scalar_type getfem::asm_H1_norm ( const mesh_im mim,
const mesh_fem mf,
const VEC U,
const mesh_region rg = mesh_region::all_convexes() 
)

compute the H1 norm of U. compute $\|\nabla U\|_2$, U might be real or complex

Definition at line 301 of file getfem_assembling.h.

References getfem::asm_H1_norm_sqr(), mf, gmm::sqrt(), and T.

Referenced by bilaplacian_crack_problem::compute_error_beta(), gf_compute(), and main().

◆ asm_H1_semi_dist()

template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_H1_semi_dist ( const mesh_im mim,
const mesh_fem mf1,
const VEC1 &  U1,
const mesh_fem mf2,
const VEC2 &  U2,
mesh_region  rg = mesh_region::all_convexes() 
)
inline

Compute the H1 semi-distance between U1 and U2, defined on two different mesh_fems (but sharing the same mesh), without interpolating U1 on mf2.

Definition at line 233 of file getfem_assembling.h.

References getfem::asm_H1_semi_dist_sqr(), gmm::sqrt(), and U2.

Referenced by gf_compute().

◆ asm_H1_semi_norm()

template<typename VEC >
scalar_type getfem::asm_H1_semi_norm ( const mesh_im mim,
const mesh_fem mf,
const VEC U,
const mesh_region rg = mesh_region::all_convexes() 
)

compute $\|\nabla U\|_2$, U might be real or complex

Definition at line 178 of file getfem_assembling.h.

References getfem::asm_H1_semi_norm_sqr(), mf, gmm::sqrt(), and T.

Referenced by bilaplacian_crack_problem::compute_error_beta(), and gf_compute().

◆ asm_H2_dist()

template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_H2_dist ( const mesh_im mim,
const mesh_fem mf1,
const VEC1 &  U1,
const mesh_fem mf2,
const VEC2 &  U2,
const mesh_region rg = mesh_region::all_convexes() 
)

Compute the H2 distance between U1 and U2

Definition at line 548 of file getfem_assembling.h.

References getfem::asm_H1_dist_sqr(), getfem::asm_H2_semi_dist_sqr(), gmm::sqrt(), T, and U2.

Referenced by bilaplacian_crack_problem::compute_error().

◆ asm_H2_norm()

template<typename VEC >
scalar_type getfem::asm_H2_norm ( const mesh_im mim,
const mesh_fem mf,
const VEC U,
const mesh_region rg = mesh_region::all_convexes() 
)

compute the H2 norm of U (for C^1 elements).

Definition at line 534 of file getfem_assembling.h.

References getfem::asm_H1_norm_sqr(), getfem::asm_H2_semi_norm_sqr(), mf, gmm::sqrt(), and T.

Referenced by bilaplacian_crack_problem::compute_error_beta(), and gf_compute().

◆ asm_H2_semi_norm()

template<typename VEC >
scalar_type getfem::asm_H2_semi_norm ( const mesh_im mim,
const mesh_fem mf,
const VEC U,
const mesh_region rg = mesh_region::all_convexes() 
)

compute $\|Hess U\|_2$, U might be real or complex. For C^1 elements

Definition at line 421 of file getfem_assembling.h.

References getfem::asm_H2_semi_norm_sqr(), mf, gmm::sqrt(), and T.

Referenced by bilaplacian_crack_problem::compute_error_beta(), and gf_compute().

◆ asm_Helmholtz()

template<typename MAT , typename VECT >
void getfem::asm_Helmholtz ( MAT M,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_data,
const VECT &  K_squared,
const mesh_region rg = mesh_region::all_convexes() 
)

assembly of the term $\int_\Omega Kuv - \nabla u.\nabla v$, for the helmholtz equation ( $\Delta u + k^2u = 0$, with $K=k^2$).

The argument K_squared may be a real or a complex-valued vector.

Definition at line 1274 of file getfem_assembling.h.

References getfem::asm_Helmholtz_(), static_contact_planetary::M, and T.

Referenced by getfem::Helmholtz_brick::asm_complex_tangent_terms(), getfem::Helmholtz_brick::asm_real_tangent_terms(), and gf_asm().

◆ asm_homogeneous_Helmholtz()

template<typename MAT , typename VECT >
void getfem::asm_homogeneous_Helmholtz ( MAT M,
const mesh_im mim,
const mesh_fem mf_u,
const VECT &  K_squared,
const mesh_region rg = mesh_region::all_convexes() 
)

assembly of the term $\int_\Omega Kuv - \nabla u.\nabla v$, for the helmholtz equation ( $\Delta u + k^2u = 0$, with $K=k^2$).

The argument K_squared may be a real or a complex-valued scalar.

Definition at line 1343 of file getfem_assembling.h.

References getfem::asm_Helmholtz_(), static_contact_planetary::M, and T.

Referenced by getfem::Helmholtz_brick::asm_complex_tangent_terms(), and getfem::Helmholtz_brick::asm_real_tangent_terms().

◆ asm_homogeneous_normal_source_term()

template<typename VECT1 , typename VECT2 >
void getfem::asm_homogeneous_normal_source_term ( VECT1 &  B,
const mesh_im mim,
const mesh_fem mf,
const VECT2 &  F,
const mesh_region rg 
)

◆ asm_homogeneous_source_term()

◆ asm_L2_dist()

template<typename VEC1 , typename VEC2 >
scalar_type getfem::asm_L2_dist ( const mesh_im mim,
const mesh_fem mf1,
const VEC1 &  U1,
const mesh_fem mf2,
const VEC2 &  U2,
mesh_region  rg = mesh_region::all_convexes() 
)
inline

Compute the distance between U1 and U2, defined on two different mesh_fems (but sharing the same mesh), without interpolating U1 on mf2.

Definition at line 115 of file getfem_assembling.h.

References getfem::asm_L2_dist_sqr(), gmm::sqrt(), and U2.

Referenced by bilaplacian_crack_problem::compute_error(), crack_mindlin_problem::compute_error(), gf_compute(), main(), and problem_definition::validate_solution().

◆ asm_L2_norm()

template<typename VEC >
scalar_type getfem::asm_L2_norm ( const mesh_im mim,
const mesh_fem mf,
const VEC U,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

compute $ \|U\|_2 $, U might be real or complex

Definition at line 55 of file getfem_assembling.h.

References getfem::asm_L2_norm_sqr(), mf, and gmm::sqrt().

Referenced by bilaplacian_crack_problem::compute_error_beta(), gf_compute(), and main().

◆ asm_lumped_mass_matrix_for_first_order()

template<typename MAT >
void getfem::asm_lumped_mass_matrix_for_first_order ( const MAT M,
const mesh_im mim,
const mesh_fem mf1,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

lumped mass matrix assembly (on the whole mesh or on the specified boundary)

Definition at line 852 of file getfem_assembling.h.

References getfem::asm_lumped_mass_matrix_for_first_order_from_consistent(), getfem::asm_mass_matrix(), and static_contact_planetary::M.

Referenced by getfem::lumped_mass_brick_for_first_order::asm_real_tangent_terms().

◆ asm_lumped_mass_matrix_for_first_order_param()

template<typename MAT , typename VECT >
void getfem::asm_lumped_mass_matrix_for_first_order_param ( MAT M,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_data,
const VECT &  F,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

lumped mass matrix assembly with an additional parameter (on the whole mesh or on the specified boundary)

Definition at line 865 of file getfem_assembling.h.

References getfem::asm_lumped_mass_matrix_for_first_order_from_consistent(), getfem::asm_mass_matrix_param(), static_contact_planetary::F, and static_contact_planetary::M.

Referenced by getfem::lumped_mass_brick_for_first_order::asm_real_tangent_terms().

◆ asm_mass_matrix()

template<typename MAT >
void getfem::asm_mass_matrix ( const MAT M,
const mesh_im mim,
const mesh_fem mf1,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

◆ asm_mass_matrix_homogeneous_param()

template<typename MAT , typename VECT >
void getfem::asm_mass_matrix_homogeneous_param ( MAT M,
const mesh_im mim,
const mesh_fem mf_u,
const VECT &  F,
const mesh_region rg = mesh_region::all_convexes() 
)

generic mass matrix assembly with an additional constant parameter (on the whole mesh or on the specified boundary)

Definition at line 821 of file getfem_assembling.h.

References getfem::asm_real_or_complex_1_param_mat(), static_contact_planetary::F, and static_contact_planetary::M.

◆ asm_mass_matrix_param() [1/2]

◆ asm_mass_matrix_param() [2/2]

template<typename MAT , typename VECT >
void getfem::asm_mass_matrix_param ( MAT M,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_data,
const VECT &  F,
const mesh_region rg = mesh_region::all_convexes() 
)

generic mass matrix assembly with an additional parameter (on the whole mesh or on the specified boundary)

Definition at line 808 of file getfem_assembling.h.

References getfem::asm_real_or_complex_1_param_mat(), static_contact_planetary::F, and static_contact_planetary::M.

◆ asm_navier_stokes_rhs()

template<typename VECT1 , typename VECT2 >
void getfem::asm_navier_stokes_rhs ( const VECT1 &  V,
const mesh_im mim,
const mesh_fem mf,
const VECT2 &  U,
const mesh_region rg = mesh_region::all_convexes() 
)

◆ asm_navier_stokes_tgm()

template<typename MAT , typename VECT >
void getfem::asm_navier_stokes_tgm ( const MAT M,
const mesh_im mim,
const mesh_fem mf,
const VECT &  U,
const mesh_region rg = mesh_region::all_convexes() 
)

◆ asm_nonlinear_elasticity_rhs()

◆ asm_nonlinear_elasticity_tangent_matrix()

◆ asm_nonlinear_incomp_rhs()

◆ asm_nonlinear_incomp_tangent_matrix()

◆ asm_normal_derivative_dirichlet_constraints()

template<typename MAT , typename VECT1 , typename VECT2 >
void getfem::asm_normal_derivative_dirichlet_constraints ( MAT H,
VECT1 &  R,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_mult,
const mesh_fem mf_r,
const VECT2 &  r_data,
const mesh_region rg,
bool  R_must_be_derivated,
int  version 
)

◆ asm_normal_derivative_source_term()

template<typename VECT1 , typename VECT2 >
void getfem::asm_normal_derivative_source_term ( VECT1 &  B,
const mesh_im mim,
const mesh_fem mf,
const mesh_fem mf_data,
const VECT2 &  F,
const mesh_region rg 
)

◆ asm_normal_source_term()

◆ asm_qu_term()

template<typename MAT , typename VECT >
void getfem::asm_qu_term ( MAT M,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_d,
const VECT &  Q,
const mesh_region rg 
)

assembly of $\int{qu.v}$

(if $u$ is a vector field of size $N$, $q$ is a square matrix $N\times N$ used by assem_general_boundary_conditions

convention: Q is of the form Q1_11 Q2_11 ..... Qn_11 Q1_21 Q2_21 ..... Qn_21 Q1_12 Q2_12 ..... Qn_12 Q1_22 Q2_22 ..... Qn_22 if N = 2, and mf_d has n/N degree of freedom

Q is a vector, so the matrix is assumed to be stored by columns (fortran style)

Works for both volumic assembly and boundary assembly

Definition at line 944 of file getfem_assembling.h.

References getfem::asm_real_or_complex_1_param_mat(), getfem::mesh_fem::get_qdim(), GMM_ASSERT1, static_contact_planetary::M, getfem::mesh_fem::nb_dof(), Q, and gmm::vect_size().

Referenced by getfem::Fourier_Robin_brick::asm_complex_tangent_terms(), getfem::asm_generalized_dirichlet_constraints(), getfem::Fourier_Robin_brick::asm_real_tangent_terms(), and gf_asm().

◆ asm_source_term()

◆ asm_stiffness_matrix_for_bilaplacian()

◆ asm_stiffness_matrix_for_homogeneous_laplacian()

◆ asm_stiffness_matrix_for_homogeneous_laplacian_componentwise()

template<typename MAT >
void getfem::asm_stiffness_matrix_for_homogeneous_laplacian_componentwise ( const MAT M,
const mesh_im mim,
const mesh_fem mf,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

◆ asm_stiffness_matrix_for_homogeneous_linear_elasticity()

template<class MAT , class VECT >
void getfem::asm_stiffness_matrix_for_homogeneous_linear_elasticity ( const MAT M,
const mesh_im mim,
const mesh_fem mf,
const VECT &  LAMBDA,
const VECT &  MU,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

Stiffness matrix for linear elasticity, with constant Lamé coefficients

Definition at line 1015 of file getfem_assembling.h.

References gmm::add(), gmm::copy(), static_contact_planetary::M, gmm::mat_nrows(), mf, gmm::vect_size(), and getfemint::workspace().

◆ asm_stiffness_matrix_for_laplacian()

◆ asm_stiffness_matrix_for_linear_elasticity()

template<class MAT , class VECT >
void getfem::asm_stiffness_matrix_for_linear_elasticity ( const MAT M,
const mesh_im mim,
const mesh_fem mf,
const mesh_fem mf_data,
const VECT &  LAMBDA,
const VECT &  MU,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

Stiffness matrix for linear elasticity, with Lamé coefficients

Definition at line 973 of file getfem_assembling.h.

References gmm::add(), gmm::copy(), static_contact_planetary::M, gmm::mat_nrows(), mf, gmm::vect_size(), and getfemint::workspace().

Referenced by gf_asm().

◆ asm_stiffness_matrix_for_linear_elasticity_Hooke()

template<typename MAT , typename VECT >
void getfem::asm_stiffness_matrix_for_linear_elasticity_Hooke ( MAT RM,
const mesh_im mim,
const mesh_fem mf,
const mesh_fem mf_data,
const VECT &  H,
const mesh_region rg = mesh_region::all_convexes() 
)

Stiffness matrix for linear elasticity, with a general Hooke tensor. This is more a demonstration of generic assembly than something useful !

Note that this function is just an alias for asm_stiffness_matrix_for_vector_elliptic.

Definition at line 1062 of file getfem_assembling.h.

References getfem::asm_stiffness_matrix_for_vector_elliptic(), H, and mf.

◆ asm_stiffness_matrix_for_scalar_elliptic()

template<typename MAT , typename VECT >
void getfem::asm_stiffness_matrix_for_scalar_elliptic ( MAT M,
const mesh_im mim,
const mesh_fem mf,
const mesh_fem mf_data,
const VECT &  A,
const mesh_region rg = mesh_region::all_convexes() 
)

assembly of $\int_\Omega A(x)\nabla u.\nabla v$, where $A(x)$ is a (symmetric positive definite) NxN matrix. Arguments:

Parameters
Ma sparse matrix of dimensions mf.nb_dof() x mf.nb_dof()
mimthe mesh_im.
mf: the mesh_fem that describes the solution, with mf.get_qdim() == N.
mf_datathe mesh_fem that describes the coefficients of A (mf_data.get_qdim() == 1).
Aa (very large) vector, which is a flattened (n x n x mf_data.nb_dof()) 3D array. For each dof of mf_data, it contains the n x n coefficients of $A$. As usual, the order is the "fortran-order", i.e. A = [A_11(dof1) A_21(dof1) A_31(dof1) A_12(dof1) A_22(dof1) ... A_33(dof) A_11(dof2) .... A_33(lastdof)]

Definition at line 1194 of file getfem_assembling.h.

References getfem::asm_real_or_complex_1_param_mat(), static_contact_planetary::M, and mf.

Referenced by getfem::generic_elliptic_brick::asm_complex_tangent_terms(), and getfem::generic_elliptic_brick::asm_real_tangent_terms().

◆ asm_stokes_B()

template<typename MAT >
void getfem::asm_stokes_B ( const MAT B,
const mesh_im mim,
const mesh_fem mf_u,
const mesh_fem mf_p,
const mesh_region rg = mesh_region::all_convexes() 
)
inline

◆ Dirichlet_nullspace()

template<typename MAT1 , typename MAT2 , typename VECT1 , typename VECT2 >
size_type getfem::Dirichlet_nullspace ( const MAT1 &  H,
MAT2 &  NS,
const VECT1 &  R,
VECT2 &  U0 
)

Build an orthogonal basis of the kernel of H in NS, gives the solution of minimal norm of H*U = R in U0 and return the dimension of the kernel. The function is based on a Gramm-Schmidt algorithm.

Definition at line 1656 of file getfem_assembling.h.

References gmm::abs(), gmm::add(), c, gmm::clean(), gmm::clear(), gmm::copy(), gmm::default_tol(), GMM_WARNING2, H, i, gmm::is_col_matrix(), j, gmm::mat_col(), gmm::mat_maxnorm(), gmm::mat_ncols(), gmm::mat_nrows(), gmm::mult(), nbd, R, gmm::scale(), gmm::scaled(), T, gmm::vect_norm2(), gmm::vect_norminf(), and gmm::vect_sp().

Referenced by gf_spmat_get_Dirichlet_nullspace().

◆ old_asm_stiffness_matrix_for_homogeneous_linear_elasticity()

template<class MAT , class VECT >
void getfem::old_asm_stiffness_matrix_for_homogeneous_linear_elasticity ( const MAT RM_,
const mesh_im mim,
const mesh_fem mf,
const VECT &  LAMBDA,
const VECT &  MU,
const mesh_region rg = mesh_region::all_convexes() 
)

◆ old_asm_stiffness_matrix_for_linear_elasticity()

template<class MAT , class VECT >
void getfem::old_asm_stiffness_matrix_for_linear_elasticity ( const MAT RM_,
const mesh_im mim,
const mesh_fem mf,
const mesh_fem mf_data,
const VECT &  LAMBDA,
const VECT &  MU,
const mesh_region rg = mesh_region::all_convexes() 
)