Coder Social home page Coder Social logo

apsis-analysis / perigee Goto Github PK

View Code? Open in Web Editor NEW
23.0 2.0 6.0 29.11 MB

PERIGEE is a finite element code for multiphysics analysis

License: BSD 3-Clause "New" or "Revised" License

CMake 1.14% C++ 98.70% MATLAB 0.04% Python 0.12%
c-plus-plus cfd finite-element-method fsi high-performance-computing multiphysics multiscale-analysis

perigee's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

perigee's Issues

part of Math_Tools move to a new namespace FE_Tools

In Math_Tools, there are several functions that are developed to assist FE routines. Also, the Matrix_double_3by3_Array and Matrix_double_6by6_Array classes are constructed for the same purposes.

We can collect these functions together as FE_Tools, so that the purpose of these functions is clearer.

Build "examples/tet4_vascular/FSI" with errors.

Dear all
I have tried to build the examples/tet4_vascular/FSI with cmake, but followed errors occur.

`CMake Error at CMakeLists.txt:149 (ADD_LIBRARY):
Cannot find source file:

/home/shuoxing/software/PERIGEE/src/Mesh/IElemBC.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .mpp .m .M .mm .ixx .cppm .h
.hh .h++ .hm .hpp .hxx .in .txx .f .F .for .f77 .f90 .f95 .f03 .hip .ispc

CMake Error at CMakeLists.txt:149 (ADD_LIBRARY):
No SOURCES given to target: perigee_preprocess
`
I think the source file is missed.

Best

element improvement

  • 1. We will get rid of the get_normal_out old fashinoned implementation, instead use the one with Vector_3 as input.
  • 2. The build basis function needs a way to get std::array<std::vector,3> as the input of the control points.
  • 3. Same for the get_h funciton.
  • 4. We rarely use get_d2R_dxx in our code, so this kind of get function, perhaps, can be removed.
  • 5. It can be convenient to return std::array<std::vector,4> for get_R_gradR and such type of access functions.

Enable ALE-CFD in the existing code

We had an old implementation of ALE-CFD. We need to enable this capability in the PERIGEE code, for the study of, say, blood pumps.

We may have a separate example folder for it, or, merge it with the NS code.

print the nonzero info from assembly

we need to print the nonzero info from the assembly routine, which is already done. We multiply 4 in the assembly with the given nonzero estimate. Perhaps this is a bit confusing. Need to unify in the future.

Enable periodic BC with reading section '$Periodic' in .msh file

  1. Gmsh_FileIO private: void read_periodic(), std::vector periodic_slave, std::vector periodic_master (node indices)

  2. write_vtp or write_quadratic_vtu( ..., bool is_periodic), if yes: DataVecStr{ {...}, "PeriodicMasterID", "Node"} written

  3. class NodalBC_periodic : public INodalBC, otherwise we just modified NodalBC

Accelerate the preprocess procedure by parallelization

In at least two parts, the procedure can be accelerated by an OpenMP type parallelization:

  1. In the convection from gmsh to vtu, the loop over element can be parallelized;
  2. In the partition of the mesh file, the generation of part file can be parallelized.

Make Matrix_SymPos_Dense an independent class

We should not make it a derived class of Matrix_Dense as it does not need the permutation vector pp at all. Logically, making it an independent class will make things easier and cleaner.

rename file

ALocal_NodalBC ---> ALocal_NBC.

This makes its name follow the style of EBC.

Matrix_PETSc class needs updating

  1. We need to rename the member data m and n as gm and gn;
  2. We need to extract the actual memory allocation and use it for the actual, finally-assembled matrices.

cross3d and normalized3d

These are outdated functions in MATH_T.

If one use them, one shall resort to fun in Vector_3.

SYS_T::to_string function needs to be replaced

new C++ allows a to_string function that does the same thing. So we do not need to have the same function in our sys_tools class. To do the replacement, we need to carefully replace all SYS_T::to_string by to_string and testing.

clean a std vector with a VEC_T function

We need a helper function that truely empty a std vector with its size and capacity to zero.

For example, Solid_Prestress needs this function to free the memory in a fluid element.

rename file

ALocal_inflow_NodalBC ---> ALocal_inflow_Data

This class does not hold NodalBC data, meaning it is not used to enforce BC on the matrix problem. Thus we change its name to avoid misunderstanding.

ElemBC_3D_hex class in need

We will need a class to load hex mesh's boundary file for surface integral (Neuman BC).

In particular, we need to discuss a rule for the outward normal vector definition, and implement a reset IEN function for hex-quad mesh.

need a SymmMatrix_3x3 class

Oftentimes, we need to work on symmetric matrices. We need a dedicated class that holds the six matrix entries.

petsc use PETSC_NULLPTR

Since 3.19, PETSc invokes PETSC_NULLPTR.

see https://petsc.org/release/changes/319/

currently, we use #define PETSC_SILENCE_DEPRECATION_WARNINGS_3_19_0
in SYS_Tools to blind this warning message. We will have to update our call of related PETSc functions and remove the above marco.

Enabling the pure Neumann bc for all cap surfaces

The code can essentially enable full Neumann for cap surfaces. There are a few minor things to take into account.

  1. The inflow file shall allow num_nbc to be zero;
  2. The backflow stabilization term shall be turned off, at least for the `inflow' caps;

With the above two, one can enable the full Neumann cap bc by setting num_inlet to zero, and prepare all caps meshes with the name starting by outflow_vol_.

a bug in CMM code

/Users/juliu/PERIGEE/examples/cmm/src/PNonlinear_CMM_Solver.cpp:504:32: warning: declaration shadows
a field of 'PNonlinear_CMM_Solver' [-Wshadow]
const PDNSolution * const &dot_step,
^
/Users/juliu/PERIGEE/examples/cmm/./include/PNonlinear_CMM_Solver.hpp:122:19: note: previous
declaration is here
PDNSolution * dot_step;
^
/Users/juliu/PERIGEE/examples/cmm/src/PNonlinear_CMM_Solver.cpp:552:26: warning: declaration shadows
a field of 'PNonlinear_CMM_Solver' [-Wshadow]
PDNSolution * const &dot_step) const
^
/Users/juliu/PERIGEE/examples/cmm/./include/PNonlinear_CMM_Solver.hpp:122:19: note: previous
declaration is here
PDNSolution * dot_step;
^
2 warnings generated.

Matrix_double_6by6_Array needs maintance

We need to at least conver the data structure from [6][6] to a oneD array of [36].

And we do not need to store the inverse of diagonal entries in the member data.

A linear elasticity code

For education purposes, we need to enable a linear elasticity example, preferably in the linearPDE folder.

enable YAML to pass control of the code

From PETSc 3.15, we may pass all petsc argument in a single YAML file, which allows us to make comments. This is more user friendly as we may have very long nested arguments for our solver control.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.