svMultiPhysics
Loading...
Searching...
No Matches
ustruct.h
1/* Copyright (c) Stanford University, The Regents of the University of California, and others.
2 *
3 * All Rights Reserved.
4 *
5 * See Copyright-SimVascular.txt for additional details.
6 *
7 * Permission is hereby granted, free of charge, to any person obtaining
8 * a copy of this software and associated documentation files (the
9 * "Software"), to deal in the Software without restriction, including
10 * without limitation the rights to use, copy, modify, merge, publish,
11 * distribute, sublicense, and/or sell copies of the Software, and to
12 * permit persons to whom the Software is furnished to do so, subject
13 * to the following conditions:
14 *
15 * The above copyright notice and this permission notice shall be included
16 * in all copies or substantial portions of the Software.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
19 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
21 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
22 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
25 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
26 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
27 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31#ifndef USTRUCT_H
32#define USTRUCT_H
33
34#include "ComMod.h"
35
36namespace ustruct {
37
38void b_ustruct_2d(const ComMod& com_mod, const int eNoN, const double w, const Vector<double>& N,
39 const Array<double>& Nx, const Array<double>& dl, const Vector<double>& hl, const Vector<double>& nV,
40 Array<double>& lR, Array3<double>& lK, Array3<double>& lKd);
41
42void b_ustruct_3d(const ComMod& com_mod, const int eNoN, const double w, const Vector<double>& N,
43 const Array<double>& Nx, const Array<double>& dl, const Vector<double>& hl, const Vector<double>& nV,
44 Array<double>& lR, Array3<double>& lK, Array3<double>& lKd);
45
46bool constitutive_model_is_valid(consts::ConstitutiveModelType model);
47
48void construct_usolid(ComMod& com_mod, CepMod& cep_mod, const mshType& lM, const Array<double>& Ag, const Array<double>& Yg,
49 const Array<double>& Dg);
50
51int get_col_ptr(ComMod& com_mod, const int rowN, const int colN);
52
53void ustruct_2d_c(ComMod& com_mod, CepMod& cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq,
54 const double w, const double Je, const Vector<double>& Nw, const Vector<double>& Nq,
55 const Array<double>& Nwx, const Array<double>& Nqx, const Array<double>& al, const Array<double>& yl,
56 const Array<double>& dl, const Array<double>& bfl, Array<double>& lR, Array3<double>& lK,
57 Array3<double>& lKd);
58
59void ustruct_2d_m(ComMod& com_mod, CepMod& cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq,
60 const int nFn, const double w, const double Je, const Vector<double>& Nw, const Vector<double>& Nq,
61 const Array<double>& Nwx, const Array<double>& al, const Array<double>& yl, const Array<double>& dl,
62 const Array<double>& bfl, const Array<double>& fN, const Vector<double>& ya_l, Array<double>& lR,
64
65void ustruct_3d_c(ComMod& com_mod, CepMod& cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq,
66 const double w, const double Je, const Vector<double>& Nw, const Vector<double>& Nq,
67 const Array<double>& Nwx, const Array<double>& Nqx, const Array<double>& al, const Array<double>& yl,
68 const Array<double>& dl, const Array<double>& bfl, Array<double>& lR, Array3<double>& lK,
69 Array3<double>& lKd);
70
71void ustruct_3d_m(ComMod& com_mod, CepMod& cep_mod, const bool vmsFlag, const int eNoNw, const int eNoNq,
72 const int nFn, const double w, const double Je, const Vector<double>& Nw, const Vector<double>& Nq,
73 const Array<double>& Nwx, const Array<double>& al, const Array<double>& yl, const Array<double>& dl,
74 const Array<double>& bfl, const Array<double>& fN, const Vector<double>& ya_l, Array<double>& lR,
76
77void ustruct_do_assem(ComMod& com_mod, const int d, const Vector<int>& eqN, const Array3<double>& lKd,
78 const Array3<double>& lK, const Array<double>& lR);
79
80void ustruct_r(ComMod& com_mod, const Array<double>& Yg);
81
82};
83
84#endif
85
The Array3 template class implements a simple interface to 3D arrays.
Definition Array3.h:52
Definition CepMod.h:220
The ComMod class duplicates the data structures in the Fortran COMMOD module defined in MOD....
Definition ComMod.h:1354
The Vector template class is used for storing int and double data.
Definition Vector.h:50
This is the container for a mesh or NURBS patch, those specific to NURBS are noted.
Definition ComMod.h:832
bool constitutive_model_is_valid(consts::ConstitutiveModelType model)
Check is a constitutive model is valid for the ustruct equation.
Definition ustruct.cpp:215
void 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, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
Reproduces Fortran USTRUCT2D_C.
Definition ustruct.cpp:442
void 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.
Definition ustruct.cpp:230
void ustruct_r(ComMod &com_mod, const Array< double > &Yg)
Definition ustruct.cpp:1740
void 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.
Definition ustruct.cpp:131
void 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.
Definition ustruct.cpp:892
void 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)'.
Definition ustruct.cpp:1593
void 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, Array< double > &lR, Array3< double > &lK, Array3< double > &lKd)
Reproduces Fortran USTRUCT3D_C.
Definition ustruct.cpp:646
void 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.
Definition ustruct.cpp:1172