v0.5.86
Todo List
Class CellEngineering::OpVirtualCurlRho
Should be done with Prisms, no need to have three kinds of elements, tets for solid, prisms for constrains and triangles to do post-processing. We can do post-pocessing with prisms.
Class CellEngineering::OpVirtualPotentialRho
Should be done with Prisms, no need to have three kinds of elements, tets for solid, prisms for constrains and triangles to do post-processing. We can do post-pocessing with prisms.
Page Density mapping from CT scans

Make a video tutorial of the presented example

Add scale parameter, in case when ct-image data and FE mesh are defined in different units (e.g. mm and m)

Input directly DICOM files (itk library)

Solving boundary and partial volume effects artifacts in a more elegant way

Add more capabilities to mhd_merger.cpp

Integrate into code (or descibe in documentation) tetrahedral meshing from .stl files by using available open source codes.

Class FluidPressure
Implementation for large displacements
Page FTensor library

Some operator for tensor4 and Tensor4_ddg are not tested for varied number of dimensions. For example first two indices has dimension 2 and last two 4.

Some operators for symmetric tensor 4 need to be implemented.

Some operators for symmetric tensor 3 on last two indices are not implemented.

Tensor4 that has symmetry on minor fist two and last two and major symmetry between fist and last two.

Tensor4 that has major symmetric only on first two and last two.

More documentation and examples. Documentation of functions and very limited at this point

File gel_analysis.cpp

Current version is limited only to one material. If one like to have general problem for nonlinear elasticity should implement general time dependent problem. If inertia terms need to be considered, this material should be add to nonlinear dynamics problem.

Internal history state variables need to be statically condensed. It can be done by implementing static condensation on finite element level or by implementing pre-conditioner.

Make this example with heterogenous approx. apace

Make this example with several refined meshes

File h_adaptive_transport.cpp
Should be implemented and tested problem from this article Demkowicz, Leszek, and Jayadeep Gopalakrishnan. "Analysis of the DPG method for the Poisson equation." SIAM Journal on Numerical Analysis 49.5 (2011): 1788-1809.
Class MagneticElement

Extension for mix formulation

Use appropriate pre-conditioner for large problems

File MedInterface.hpp

Reading higher order entities

Reading fields data

Page Mix formulation and integration on skeleton (h-adaptivity)

Should be implemented and tested problem from this article [18]. In this paper analytical solution is available, allowing to tested efficiency of evaluated error. You are very welcome to improve that documentation.

You can find two other papers, [13] and [4] which have efficient error estimator working in the natural norm. Those errors estimators are not very different from an implementation point of view and could be easily added here.

To do numerical experiment testing error bound we can solve the problem from [18] where analytical solutions is given. That will involve modification how boundary conditions are applied. Again, this is easy to implement, so if you are willing to add this to this documentation, it is very welcome.

Based on this work, you can write a good journal article about the efficiency of error estimator, taking into account two above remarks. If you are interested, we are happy to help. Extension to hp-adaptivity is straightforward.

A useful add-on is to construct preconditioner, which will take into account hierarchy created during hp-adaptivity, this involves some work, again we are happy to help.

Make this documentation better

HP-adaptive

Problem tailored preconditioner for Krylov solver

Convergence study, estimation of constants

Member MixTransport::MixTransportElement::evaluateError ()
this functions runs serial, in future should be parallel and work on distributed meshes.
Class MoFEM::BasicEntity
BasicEntity in should be linked to directly to MoAB data structures such that connectivity and nodal coordinates could be quickly accessed, without need of using native MoAB functions.
Member MoFEM::Core::add_field (const std::string &name, const FieldSpace space, const FieldApproximationBase base, const FieldCoefficientsNumber nb_cooficients, const TagType tag_type=MB_TAG_SPARSE, const enum MoFEMTypes bh=MF_EXCL, int verb=-1)
MB_TAG_DENSE will not work properly in general case. It is need to separate field tags for each entity separately. That will allow for HO orders but homogenous approx. order on each entity. Need some discussion what is optimal solution. MB_TAG_SPARSE gives flexibility, but it not memory efficient. MB_TAG_DENSE uses memory more efficient and in principle allow for better efficiency if properly utilized.
Class MoFEM::FatPrismElementForcesAndSourcesCore
Need to implement operators that will make this element work as Volume element
Member MoFEM::FieldBlas::fieldAxpy (const double alpha, const std::string &field_name_x, const std::string &field_name_y, bool error_if_missing=false, bool creat_if_missing=false)
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::FieldBlas::fieldScale (const double alpha, const std::string &field_name)
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::FieldBlas::setField (const double val, const EntityType type, const std::string &field_name)
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::FieldBlas::setField (const double val, const EntityType type, const Range &ents, const std::string &field_name)
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::ForcesAndSourcesCore::getRuleHook
check preferred format how works with gcc and clang, see http://www.boost.org/doc/libs/1_64_0/doc/html/function/tutorial.html#idp247873024
Class MoFEM::Interface
Clean interface, organize groups outsource some functions to independent interface
Member MoFEM::Interface::check_msId_meshset (const int msId, const CubitBCType cubit_bc_type)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::delete_cubit_msId (const CubitBCType cubit_bc_type, const int msId)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::field_axpy (const double alpha, const std::string &fiel_name_x, const std::string &field_name_y, bool error_if_missing=false, bool creat_if_missing=false)=0
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::Interface::field_scale (const double alpha, const std::string &field_name)=0
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::Interface::get_adjacencies (const Problem *problem_ptr, const EntityHandle *from_entities, const int num_netities, const int to_dimension, Range &adj_entities, const int operation_type=moab::Interface::INTERSECT, const int verb=0) const =0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::get_adjacencies (const BitRefLevel &bit, const EntityHandle *from_entities, const int num_netities, const int to_dimension, Range &adj_entities, const int operation_type=moab::Interface::INTERSECT, const int verb=0) const =0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::get_adjacencies_equality (const EntityHandle from_entiti, const int to_dimension, Range &adj_entities) const =0
Should be outsourced to separate interface, i.e. BitLevelManager
Member MoFEM::Interface::get_cubit_meshsets (const unsigned int cubit_bc_type, Range &meshsets)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::get_cubit_msId (const int msId, const CubitBCType cubit_bc_type, const CubitMeshSets **cubit_meshset_ptr)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::get_cubit_msId_entities_by_dimension (const int msId, const unsigned int cubit_bc_type, const int dimension, Range &entities, const bool recursive=false)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::get_cubit_msId_entities_by_dimension (const int msId, const unsigned int cubit_bc_type, Range &entities, const bool recursive=false)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::get_cubit_msId_meshset (const int msId, const unsigned int cubit_bc_type, EntityHandle &meshset)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::get_entities_by_ref_level (const BitRefLevel &bit, const BitRefLevel &mask, const EntityHandle meshset)=0

Should be outsourced to separate interface, i.e. BitLevelManager

Member MoFEM::Interface::get_entities_by_ref_level (const BitRefLevel &bit, const BitRefLevel &mask, Range &ents)=0

Should be outsourced to separate interface, i.e. BitLevelManager

Member MoFEM::Interface::get_entities_by_type_and_ref_level (const BitRefLevel &bit, const BitRefLevel &mask, const EntityType type, Range &ents, int verb=-1)=0

Should be outsourced to separate interface, i.e. BitLevelManager

Member MoFEM::Interface::get_entities_by_type_and_ref_level (const BitRefLevel &bit, const BitRefLevel &mask, const EntityType type, const EntityHandle meshset, int verb=-1)=0

Should be outsourced to separate interface, i.e. BitLevelManager

Member MoFEM::Interface::seed_finite_elements (const EntityHandle meshset, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManager
Member MoFEM::Interface::seed_finite_elements (const Range &entities, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManager
Member MoFEM::Interface::seed_ref_level (const Range &ents, const BitRefLevel &bit, const bool only_tets=true, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManager
Member MoFEM::Interface::seed_ref_level_2D (const EntityHandle meshset, const BitRefLevel &bit, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManager
Member MoFEM::Interface::seed_ref_level_3D (const EntityHandle meshset, const BitRefLevel &bit, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManager
Member MoFEM::Interface::set_cubit_msId_attribites_data_structure (const CubitBCType cubit_bc_type, const int ms_id, const GenericAttributeData &data, const std::string name="")=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::set_cubit_msId_bc_data_structure (const CubitBCType cubit_bc_type, const int ms_id, const GenericCubitBcData &data)=0
All cubit interface functions should be outsourced to dedicated interface
Member MoFEM::Interface::set_field (const double val, const EntityType type, const std::string &field_name)=0
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::Interface::set_field (const double val, const EntityType type, const Range &ents, const std::string &field_name)=0
should be moved to independent interface, i.e. FieldAlgebra
Member MoFEM::Interface::shift_left_bit_ref (const int shif, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::shift_right_bit_ref (const int shift, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::update_field_meshset_by_entities_children (const BitRefLevel &child_bit, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::update_field_meshset_by_entities_children (const std::string name, const BitRefLevel &child_bit, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::update_finite_element_meshset_by_entities_children (const std::string name, const BitRefLevel &child_bit, const EntityType fe_ent_type, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::Interface::update_meshset_by_entities_children (const EntityHandle parent, const BitRefLevel &child_bit, const EntityHandle child, EntityType child_type, const bool recursive=false, int verb=-1)=0
Should be outsourced to separate interface, i.e. BitLevelManage
Member MoFEM::MeshsetsManager::checkMeshset (const int ms_id, const CubitBCType cubit_bc_type) const
All cubit interface functions should be outsourced to dedicated interface
Class MoFEM::OpCalculateInvJacForFace
Generalize function for arbitrary face orientation in 3d space
Class MoFEM::PrismInterface
FIXME Names of methods do not follow naming convention and are difficult to work with.
Class MoFEM::Problem
fix names following name convention
Class MoFEM::RefEntity
th_RefType "_RefType" is set as two integers, need to be fixed, it is waste of space.
Class NeummanForcesSurfaceComplexForLazy
This is old implementation, need to be reimplemented, using auto-differentiation. It is well tested and works. well.
Page Periodic boundary conditions with Nitsche's method

Implement integration for Nitsche's method with periodic constraints where faces on opposite sides do not align.

Implement interface in main MoAB library for projecting surface/volume meshes, such that the resulting mesh encapsulates all entities of both meshes.

Implement example for RVE with nonlinear material.

Example for mesh generated by TetGen/NetGen

Implement surface constraints for mesh smoothing, as an example nonlinear constrains.

For some cases, it was discovered that integration quadrature was insufficient. That is corrected however some plots need to be recalculated and updated.

In new contact module case for non-conforming meshes is implemented. The algorithm implemented there can be used to here.

For proposes of integration on skeleton new new element has been implemented, MoFEM::VolumeElementForcesAndSourcesCoreOnSide and user operator MoFEM::VolumeElementForcesAndSourcesCoreOnSide::UserDataOperator. Those developemnt can be used here to futher simplify implementation. Such elements are used in UltraWeakTransportElement.hpp to inegrate jumps on mesh skeleton.

Class PostProcCommonOnRefMesh::OpGetFieldGradientValues
Implementation for Hdiv and Hcurl to be implemented
Class PostProcCommonOnRefMesh::OpGetFieldValues
Implamentation of setting values to fieldMap for Hcurl and Hdiv not implemented
File PrismInterface.cpp
FIXME this is no so good implementation
Page Soap film spanned on wire

Make this documentation better

Error estimator for L2, H1 and H1 semi-norm

Mesh hp-adaptivity (All tools are there, need be used in this example).

Generalization to arbitrary wire curve in 3d space.

Write documentation about mesh bit levels and mesh refining.

Convergence analysis h- vs. p- refinement.

Adaptive time stepping

Page Solid shell element on prisms
Work in progress.
Page Time dependent nonlinear mix formulation (unsaturated flow)

Add example with hp-adaptivity

Implement block-solver and multigrid

Apply Kirchhoff transform

Add boundary condition for evaporation

Add air phase and mechanical filed

Add diffusion and other physical phenomena

Make example with flux history or head history. That is implemented but no example is added

Add diffusion and other physical phenomenas

Page Writing documentation
Each module can copy figures to a directory with the unique name for USER_MODULE_figures.