GetFEM  5.4.2
getfem::virtual_brick Class Reference

The virtual brick has to be derived to describe real model bricks. More...

#include <getfem_models.h>

Inherited by getfem::basic_d2_on_dt2_brick, getfem::basic_d_on_dt_brick, getfem::bilap_brick, getfem::Coulomb_friction_brick, getfem::Dirichlet_condition_brick, getfem::Fourier_Robin_brick, getfem::gen_linear_assembly_brick, getfem::gen_nonlinear_assembly_brick, getfem::gen_source_term_assembly_brick, getfem::generic_elliptic_brick, getfem::have_private_data_brick, getfem::Helmholtz_brick, getfem::integral_contact_nonmatching_meshes_brick, getfem::integral_contact_rigid_obstacle_brick, getfem::integral_large_sliding_contact_brick, getfem::intergral_large_sliding_contact_brick_raytracing, getfem::iso_lin_elasticity_new_brick, getfem::KL_source_term_brick, getfem::linear_incompressibility_brick, getfem::lumped_mass_for_first_order_brick, getfem::mass_brick, getfem::Nitsche_large_sliding_contact_brick_raytracing, getfem::nonlinear_elasticity_brick, getfem::nonlinear_incompressibility_brick, getfem::normal_derivative_Dirichlet_condition_brick, getfem::normal_derivative_source_term_brick, getfem::normal_source_term_brick, getfem::penalized_contact_nonmatching_meshes_brick, getfem::penalized_contact_rigid_obstacle_brick, getfem::pointwise_constraints_brick, getfem::simplification_Dirichlet_condition_brick, getfem::source_term_brick, and level_set_contact::level_set_contact_brick.

Public Member Functions

virtual void asm_real_tangent_terms (const model &, size_type, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::real_matlist &, model::real_veclist &, model::real_veclist &, size_type, build_version) const
 Assembly of bricks real tangent terms. More...
 
virtual void asm_complex_tangent_terms (const model &, size_type, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::complex_matlist &, model::complex_veclist &, model::complex_veclist &, size_type, build_version) const
 Assembly of bricks complex tangent terms. More...
 
virtual void real_pre_assembly_in_serial (const model &, size_type, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::real_matlist &, model::real_veclist &, model::real_veclist &, size_type, build_version) const
 Peform any pre assembly action for real term assembly. More...
 
virtual void complex_pre_assembly_in_serial (const model &, size_type, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::complex_matlist &, model::complex_veclist &, model::complex_veclist &, size_type, build_version) const
 Peform any pre assembly action for complex term assembly. More...
 
virtual void real_post_assembly_in_serial (const model &, size_type, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::real_matlist &, model::real_veclist &, model::real_veclist &, size_type, build_version) const
 Peform any post assembly action for real terms. More...
 
virtual void complex_post_assembly_in_serial (const model &, size_type, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::complex_matlist &, model::complex_veclist &, model::complex_veclist &, size_type, build_version) const
 Peform any post assembly action for complex terms. More...
 
void check_stiffness_matrix_and_rhs (const model &, size_type, const model::termlist &tlist, const model::varnamelist &, const model::varnamelist &, const model::mimlist &, model::real_matlist &, model::real_veclist &, model::real_veclist &, size_type rg, const scalar_type delta=1e-8) const
 check consistency of stiffness matrix and rhs
 
virtual std::string declare_volume_assembly_string (const model &, size_type, const model::varnamelist &, const model::varnamelist &) const
 The brick may declare an assembly string for the computation of the Neumann terms (in order to prescribe boundary conditions with Nitche's method).
 

Detailed Description

The virtual brick has to be derived to describe real model bricks.

The set_flags method has to be called by the derived class. The virtual methods asm_real_tangent_terms and/or asm_complex_tangent_terms have to be defined. The brick should not store data. The data have to be stored in the model object.

Definition at line 1440 of file getfem_models.h.

Member Function Documentation

◆ asm_real_tangent_terms()

virtual void getfem::virtual_brick::asm_real_tangent_terms ( const model ,
size_type  ,
const model::varnamelist &  ,
const model::varnamelist &  ,
const model::mimlist &  ,
model::real_matlist &  ,
model::real_veclist &  ,
model::real_veclist &  ,
size_type  ,
build_version   
) const
inlinevirtual

Assembly of bricks real tangent terms.

In case of Getfem's compilation with OpenMP option, this method is executed on multiple threads. The parallelism is provided by distributing all tangent matrices and vectors and accumulating them later into the original. Additionally, by default, all mesh_region objects, participating in the assembly, are also partitioned. In order to avoid data race conditions, this method should not modify any data simultaneously accessible from multiple threads. In case this is unavoidable, the race can be prevented by distributing this data (of type T) between the threads via getfem::omp_distribute<T> (prefered method) or protected from concurrent access with mutexes (e.g. getfem::omp_lock) or OpenMP critical section.

doesn't have to be overriden if serial pre- post- assemblies are defined

Reimplemented in level_set_contact::level_set_contact_brick.

Definition at line 1493 of file getfem_models.h.

◆ asm_complex_tangent_terms()

virtual void getfem::virtual_brick::asm_complex_tangent_terms ( const model ,
size_type  ,
const model::varnamelist &  ,
const model::varnamelist &  ,
const model::mimlist &  ,
model::complex_matlist &  ,
model::complex_veclist &  ,
model::complex_veclist &  ,
size_type  ,
build_version   
) const
inlinevirtual

Assembly of bricks complex tangent terms.

In case of Getfem's compilation with OpenMP option, this method is executed on multiple threads. The parallelism is provided by distributing all tangent matrices and vectors and accumulating them later into the original. Additionally, by default, all mesh_region objects, participating in the assembly, are also partitioned. In order to avoid data race conditions, this method should not modify any data simultaneously accessible from multiple threads. In case this is unavoidable, the race can be prevented by distributing this data (of type T) between the threads via getfem::omp_distribute<T> (prefered method) or protected from concurrent access with mutexes (e.g. getfem::omp_lock) or OpenMP critical section.

doesn't have to be overriden if serial pre- post- assemblies are defined

Definition at line 1519 of file getfem_models.h.

◆ real_pre_assembly_in_serial()

virtual void getfem::virtual_brick::real_pre_assembly_in_serial ( const model ,
size_type  ,
const model::varnamelist &  ,
const model::varnamelist &  ,
const model::mimlist &  ,
model::real_matlist &  ,
model::real_veclist &  ,
model::real_veclist &  ,
size_type  ,
build_version   
) const
inlinevirtual

Peform any pre assembly action for real term assembly.

The purpose of this method is to do any action that cannot be peformed in the main assembly routines in parallel. Possible action can be modification of the model object, cashing some data that cannot be distributed etc.

Definition at line 1537 of file getfem_models.h.

◆ complex_pre_assembly_in_serial()

virtual void getfem::virtual_brick::complex_pre_assembly_in_serial ( const model ,
size_type  ,
const model::varnamelist &  ,
const model::varnamelist &  ,
const model::mimlist &  ,
model::complex_matlist &  ,
model::complex_veclist &  ,
model::complex_veclist &  ,
size_type  ,
build_version   
) const
inlinevirtual

Peform any pre assembly action for complex term assembly.

The purpose of this method is to do any action that cannot be peformed in the main assembly routines in parallel. Possible action can be modification of the model object, cashing some data that cannot be distributed etc.

Definition at line 1551 of file getfem_models.h.

◆ real_post_assembly_in_serial()

virtual void getfem::virtual_brick::real_post_assembly_in_serial ( const model ,
size_type  ,
const model::varnamelist &  ,
const model::varnamelist &  ,
const model::mimlist &  ,
model::real_matlist &  ,
model::real_veclist &  ,
model::real_veclist &  ,
size_type  ,
build_version   
) const
inlinevirtual

Peform any post assembly action for real terms.

The purpose of this method is to do any action that cannot be peformed in the main assembly routines in parallel. Possible action can be modification of the model object, cashing some data that cannot be distributed etc.

Definition at line 1565 of file getfem_models.h.

◆ complex_post_assembly_in_serial()

virtual void getfem::virtual_brick::complex_post_assembly_in_serial ( const model ,
size_type  ,
const model::varnamelist &  ,
const model::varnamelist &  ,
const model::mimlist &  ,
model::complex_matlist &  ,
model::complex_veclist &  ,
model::complex_veclist &  ,
size_type  ,
build_version   
) const
inlinevirtual

Peform any post assembly action for complex terms.

The purpose of this method is to do any action that cannot be peformed in the main assembly routines in parallel. Possible action can be modification of the model object, cashing some data that cannot be distributed etc.

Definition at line 1579 of file getfem_models.h.


The documentation for this class was generated from the following files: