svMultiPhysics
Loading...
Searching...
No Matches
mat_models.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 MAT_MODELS_H
32#define MAT_MODELS_H
33
34#include "Array.h"
35#include "CepMod.h"
36#include "ComMod.h"
37#include "Tensor4.h"
38
39#include "mat_fun.h"
40
41#include "eigen3/Eigen/Core"
42#include "eigen3/Eigen/Dense"
43#include "eigen3/unsupported/Eigen/CXX11/Tensor"
44
45namespace mat_models {
46
47void actv_strain(const ComMod& com_mod, const CepMod& cep_mod, const double gf,
48 const int nfd, const Array<double>& fl, Array<double>& Fa);
49
50void cc_to_voigt(const int nsd, const Tensor4<double>& CC, Array<double>& Dm);
51
52void voigt_to_cc(const int nsd, const Array<double>& Dm, Tensor4<double>& CC);
53
54void compute_fib_stress(const ComMod& com_mod, const CepMod& cep_mod, const fibStrsType& Tfl, double& g);
55
56void compute_pk2cc(const ComMod& com_mod, const CepMod& cep_mod, const dmnType& lDmn, const Array<double>& F, const int nfd,
57 const Array<double>& fl, const double ya, Array<double>& S, Array<double>& Dm, double& Ja);
58
59void compute_pk2cc_shlc(const ComMod& com_mod, const dmnType& lDmn, const int nfd, const Array<double>& fNa0,
60 const Array<double>& gg_0, const Array<double>& gg_x, double& g33, Vector<double>& Sml, Array<double>& Dml);
61
62void compute_pk2cc_shli(const ComMod& com_mod, const dmnType& lDmn, const int nfd, const Array<double>& fNa0,
63 const Array<double>& gg_0, const Array<double>& gg_x, double& g33, Vector<double>& Sml, Array<double>& Dml);
64
65void compute_tau(const ComMod& com_mod, const dmnType& lDmn, const double detF, const double Je, double& tauM, double& tauC);
66
67void compute_svol_p(const ComMod& com_mod, const CepMod& cep_mod, const stModelType& stM, const double J,
68 double& p, double& pl);
69
70void g_vol_pen(const ComMod& com_mod, const dmnType& lDmn, const double p,
71 double& ro, double& bt, double& dro, double& dbt, const double Ja);
72
73void compute_visc_stress_potential(const double mu, const int eNoN, const Array<double>& Nx, const double vx, const double F,
74 Array<double>& Svis, Array3<double>& Kvis_u, Array3<double>& Kvis_v);
75
76void compute_visc_stress_newtonian(const double mu, const int eNoN, const Array<double>& Nx, const Array<double>& vx, const Array<double>& F,
77 Array<double>& Svis, Array3<double>& Kvis_u, Array3<double>& Kvis_v);
78
79void compute_visc_stress_and_tangent(const dmnType& lDmn, const int eNoN, const Array<double>& Nx, const Array<double>& vx, const Array<double>& F,
80 Array<double>& Svis, Array3<double>& Kvis_u, Array3<double>& Kvis_v);
81};
82
83#endif
84
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 Tensor4 template class implements a simple interface to 4th order tensors.
Definition Tensor4.h:45
The Vector template class is used for storing int and double data.
Definition Vector.h:50
Domain type is to keep track with element belong to which domain and also different physical quantiti...
Definition ComMod.h:432
Definition ComMod.h:327
Structural domain type.
Definition ComMod.h:346