/
RheologyElasticity.i
112 lines (94 loc) · 4.22 KB
/
RheologyElasticity.i
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// =================================================================================================
// This code is part of PyLith, developed through the Computational Infrastructure
// for Geodynamics (https://github.com/geodynamics/pylith).
//
// Copyright (c) 2010-2023, University of California, Davis and the PyLith Development Team.
// All rights reserved.
//
// See https://mit-license.org/ and LICENSE.md and for license information.
// =================================================================================================
/** @file modulesrc/materials/RheologyElasticity.i
*
* Python interface to C++ abstract base class RheologyElasticity.
*/
namespace pylith {
namespace materials {
class RheologyElasticity : public pylith::utils::PyreComponent {
// PUBLIC METHODS //////////////////////////////////////////////////////////////////////////////////////////
public:
/// Default constructor.
RheologyElasticity(void);
/// Destructor.
virtual ~RheologyElasticity(void);
/// Deallocate PETSc and local data structures.
void deallocate(void);
/** Get auxiliary factory associated with physics.
*
* @return Auxiliary factory for physics object.
*/
virtual
pylith::materials::AuxiliaryFactoryElasticity* getAuxiliaryFactory(void) = 0;
/// Add rheology subfields to auxiliary field.
virtual
void addAuxiliarySubfields(void) = 0;
/** Get stress kernel for RHS residual, G(t,s).
*
* @param[in] coordsys Coordinate system.
*
* @return RHS residual kernel for stress.
*/
virtual
PetscPointFunc getKernelf1v(const spatialdata::geocoords::CoordSys* coordsys) const = 0;
/** Get elastic constants kernel for RHS Jacobian G(t,s).
*
* @param[in] coordsys Coordinate system.
*
* @return RHS Jacobian kernel for elastic constants.
*/
virtual
PetscPointJac getKernelJf3vu(const spatialdata::geocoords::CoordSys* coordsys) const = 0;
/** Get f0 kernel for LHS interface residual, F(t,s,dot{s}), for negative fault face.
*
* @param[in] coordsys Coordinate system.
*
* @return LHS residual f0 kernel.
*/
virtual
PetscBdPointFunc getKernelf0Neg(const spatialdata::geocoords::CoordSys* coordsys) const = 0;
/** Get f0 kernel for LHS interface residual, F(t,s,dot{s}), for positive fault face.
*
* @param[in] coordsys Coordinate system.
*
* @return LHS residual f0 kernel.
*/
virtual
PetscBdPointFunc getKernelf0Pos(const spatialdata::geocoords::CoordSys* coordsys) const = 0;
/** Get stress kernel for derived field.
*
* @param[in] coordsys Coordinate system.
*
* @return Project kernel for computing stress subfield in derived field.
*/
virtual
PetscPointFunc getKernelCauchyStressVector(const spatialdata::geocoords::CoordSys* coordsys) const = 0;
/** Add kernels for updating state variables.
*
* @param[inout] kernels Array of kernels for updating state variables.
* @param[in] coordsys Coordinate system.
*/
virtual
void addKernelsUpdateStateVars(std::vector<pylith::feassemble::IntegratorDomain::ProjectKernels>* kernels,
const spatialdata::geocoords::CoordSys* coordsys) const;
/** Update kernel constants.
*
* @param[inout] kernelConstants Array of constants used in integration kernels.
* @param[in] dt Current time step.
*/
virtual
void updateKernelConstants(pylith::real_array* kernelConstants,
const PylithReal dt) const;
};
// class RheologyElasticity
} // materials
} // pylith
// End of file