svFSIplus
Macros | Functions
ustruct.cpp File Reference

Structural mechanics implementation based on the following reference: More...

#include "ustruct.h"
#include "all_fun.h"
#include "fs.h"
#include "mat_fun.h"
#include "mat_models.h"
#include "nn.h"
#include "utils.h"
#include <math.h>
Include dependency graph for ustruct.cpp:

Functions

void ustruct::b_ustruct_2d (const ComMod &com_mod, const int eNoN, const double w, const Vector< double > &N, const Array< double > &Nx, const Array< double > &dl, const Vector< double > &hl, const Vector< double > &nV, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
 
void ustruct::b_ustruct_3d (const ComMod &com_mod, const int eNoN, const double w, const Vector< double > &N, const Array< double > &Nx, const Array< double > &dl, const Vector< double > &hl, const Vector< double > &nV, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
 Add follower pressure load contributions to the local residual and stiffness matrix. More...
 
void ustruct::construct_usolid (ComMod &com_mod, CepMod &cep_mod, const mshType &lM, const Array< double > &Ag, const Array< double > &Yg, const Array< double > &Dg)
 Reproduces Fortran CONSTRUCT_uSOLID. More...
 
int ustruct::get_col_ptr (ComMod &com_mod, const int rowN, const int colN)
 
void ustruct::ustruct_2d_c (ComMod &com_mod, CepMod &cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq, const double w, const double Je, const Vector< double > &Nw, const Vector< double > &Nq, const Array< double > &Nwx, const Array< double > &Nqx, const Array< double > &al, const Array< double > &yl, const Array< double > &dl, const Array< double > &bfl, const Array< double > &Kxi, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
 Reproduces Fortran USTRUCT2D_C. More...
 
void ustruct::ustruct_3d_c (ComMod &com_mod, CepMod &cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq, const double w, const double Je, const Vector< double > &Nw, const Vector< double > &Nq, const Array< double > &Nwx, const Array< double > &Nqx, const Array< double > &al, const Array< double > &yl, const Array< double > &dl, const Array< double > &bfl, const Array< double > &Kxi, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
 Reproduces Fortran USTRUCT3D_C. More...
 
void ustruct::ustruct_2d_m (ComMod &com_mod, CepMod &cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq, const int nFn, const double w, const double Je, const Vector< double > &Nw, const Vector< double > &Nq, const Array< double > &Nwx, const Array< double > &al, const Array< double > &yl, const Array< double > &dl, const Array< double > &bfl, const Array< double > &fN, const Vector< double > &ya_l, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
 Replicates Fortran USTRUCT2D_M. More...
 
void ustruct::ustruct_3d_m (ComMod &com_mod, CepMod &cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq, const int nFn, const double w, const double Je, const Vector< double > &Nw, const Vector< double > &Nq, const Array< double > &Nwx, const Array< double > &al, const Array< double > &yl, const Array< double > &dl, const Array< double > &bfl, const Array< double > &fN, const Vector< double > &ya_l, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
 Reproduces Fortran USTRUCT3D_M. More...
 
void ustruct::ustruct_do_assem (ComMod &com_mod, const int d, const Vector< int > &eqN, const Array3< double > &lKd, const Array3< double > &lK, const Array< double > &lR)
 Replicates 'SUBROUTINE USTRUCT_DOASSEM(d, eqN, lKd, lK, lR)'. More...
 
void ustruct::ustruct_r (ComMod &com_mod, const Array< double > &Yg)
 

Detailed Description

Structural mechanics implementation based on the following reference:

Ju Liu, Alison L. Marsden, A unified continuum and variational multiscale formulation for fluids, solids, and fluid–structure interaction, Computer Methods in Applied Mechanics and Engineering, Volume 337, 2018, Pages 549-597, ISSN 0045-7825, https://doi.org/10.1016/j.cma.2018.03.045.

This paper describes a unified framework for fluid, solids, and FSI. The code in this file is based on the solid mechanics portion of the paper, which can be found in Section 4.

Function Documentation

◆ b_ustruct_3d()

void ustruct::b_ustruct_3d ( const ComMod com_mod,
const int  eNoN,
const double  w,
const Vector< double > &  N,
const Array< double > &  Nx,
const Array< double > &  dl,
const Vector< double > &  hl,
const Vector< double > &  nV,
Array< double > &  lR,
Array3< double > &  lK,
Array3< double > &  lKd 
)

Add follower pressure load contributions to the local residual and stiffness matrix.

Parameters
com_mod
eNoN
wGauss point weight times reference configuration area
NShape function values at the Gauss point
NxShape function derivatives at the Gauss point
dlDisplacement vector
hlMagnitude of pressure
nVNormal vector (in reference configuration)
lRLocal residual
lKLocal stiffness matrix
lKdLocal stiffness matrix (displacement)

◆ construct_usolid()

void ustruct::construct_usolid ( ComMod com_mod,
CepMod cep_mod,
const mshType lM,
const Array< double > &  Ag,
const Array< double > &  Yg,
const Array< double > &  Dg 
)

Reproduces Fortran CONSTRUCT_uSOLID.

◆ ustruct_2d_c()

void ustruct::ustruct_2d_c ( ComMod com_mod,
CepMod cep_mod,
const bool  vmsFlag,
const int  eNoNw,
const int  eNoNq,
const double  w,
const double  Je,
const Vector< double > &  Nw,
const Vector< double > &  Nq,
const Array< double > &  Nwx,
const Array< double > &  Nqx,
const Array< double > &  al,
const Array< double > &  yl,
const Array< double > &  dl,
const Array< double > &  bfl,
const Array< double > &  Kxi,
Array< double > &  lR,
Array3< double > &  lK,
Array3< double > &  lKd 
)

Reproduces Fortran USTRUCT2D_C.

◆ ustruct_2d_m()

void ustruct::ustruct_2d_m ( ComMod com_mod,
CepMod cep_mod,
const bool  vmsFlag,
const int  eNoNw,
const int  eNoNq,
const int  nFn,
const double  w,
const double  Je,
const Vector< double > &  Nw,
const Vector< double > &  Nq,
const Array< double > &  Nwx,
const Array< double > &  al,
const Array< double > &  yl,
const Array< double > &  dl,
const Array< double > &  bfl,
const Array< double > &  fN,
const Vector< double > &  ya_l,
Array< double > &  lR,
Array3< double > &  lK,
Array3< double > &  lKd 
)

Replicates Fortran USTRUCT2D_M.

◆ ustruct_3d_c()

void ustruct::ustruct_3d_c ( ComMod com_mod,
CepMod cep_mod,
const bool  vmsFlag,
const int  eNoNw,
const int  eNoNq,
const double  w,
const double  Je,
const Vector< double > &  Nw,
const Vector< double > &  Nq,
const Array< double > &  Nwx,
const Array< double > &  Nqx,
const Array< double > &  al,
const Array< double > &  yl,
const Array< double > &  dl,
const Array< double > &  bfl,
const Array< double > &  Kxi,
Array< double > &  lR,
Array3< double > &  lK,
Array3< double > &  lKd 
)

Reproduces Fortran USTRUCT3D_C.

◆ ustruct_3d_m()

void ustruct::ustruct_3d_m ( ComMod com_mod,
CepMod cep_mod,
const bool  vmsFlag,
const int  eNoNw,
const int  eNoNq,
const int  nFn,
const double  w,
const double  Je,
const Vector< double > &  Nw,
const Vector< double > &  Nq,
const Array< double > &  Nwx,
const Array< double > &  al,
const Array< double > &  yl,
const Array< double > &  dl,
const Array< double > &  bfl,
const Array< double > &  fN,
const Vector< double > &  ya_l,
Array< double > &  lR,
Array3< double > &  lK,
Array3< double > &  lKd 
)

Reproduces Fortran USTRUCT3D_M.

◆ ustruct_do_assem()

void ustruct::ustruct_do_assem ( ComMod com_mod,
const int  d,
const Vector< int > &  eqN,
const Array3< double > &  lKd,
const Array3< double > &  lK,
const Array< double > &  lR 
)

Replicates 'SUBROUTINE USTRUCT_DOASSEM(d, eqN, lKd, lK, lR)'.

◆ ustruct_r()

void ustruct::ustruct_r ( ComMod com_mod,
const Array< double > &  Yg 
)

Modifies: com_mod.Rd