OOFEM 3.0
Loading...
Searching...
No Matches
phasefieldelement.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 *
14 * Copyright (C) 1993 - 2025 Borek Patzak
15 *
16 *
17 *
18 * Czech Technical University, Faculty of Civil Engineering,
19 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
20 *
21 * This library is free software; you can redistribute it and/or
22 * modify it under the terms of the GNU Lesser General Public
23 * License as published by the Free Software Foundation; either
24 * version 2.1 of the License, or (at your option) any later version.
25 *
26 * This program is distributed in the hope that it will be useful,
27 * but WITHOUT ANY WARRANTY; without even the implied warranty of
28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
29 * Lesser General Public License for more details.
30 *
31 * You should have received a copy of the GNU Lesser General Public
32 * License along with this library; if not, write to the Free Software
33 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
34 */
35
36#ifndef phasefieldelement_h
37#define phasefieldelement_h
38
40
41namespace oofem {
46{
47protected:
49
50public:
51 PhaseFieldElement( int i, Domain *aDomain );
52 virtual ~PhaseFieldElement() {}
53
55
56 virtual void giveDofManDofIDMask_u(IntArray &answer) = 0;
57 virtual void giveDofManDofIDMask_d(IntArray &answer) = 0;
58
59 const char *giveClassName() const { return "PhaseFieldElement"; }
60
61 void computeLocationArrayOfDofIDs(const IntArray &dofIdArray, IntArray &answer);
62
63 double computeFreeEnergy( GaussPoint *gp, TimeStep *tStep );
64
67 double giveInternalLength( ) { return internalLength; }
71 double giveRelaxationTime( ) { return relaxationTime; }
72
73protected:
74
75 virtual void computeStiffnessMatrix(FloatMatrix &, MatResponseMode, TimeStep *);
76
77 void computeStiffnessMatrix_uu(FloatMatrix &, MatResponseMode, TimeStep *);
78 void computeStiffnessMatrix_ud(FloatMatrix &, MatResponseMode, TimeStep *);
79 void computeStiffnessMatrix_dd(FloatMatrix &, MatResponseMode, TimeStep *);
80 void computeStiffnessMatrix_du(FloatMatrix &, MatResponseMode, TimeStep *);
81
82
83 double computeG(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN);
84 double computeGPrim(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN);
85 double computeDamageAt(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN);
86
87 void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord);
88 void giveInternalForcesVector_u(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord);
89 void giveInternalForcesVector_d(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord);
90 void computeBStress_u(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord);
91 void computeNStress_d( FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord );
92
93 void computeDisplacementUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN);
94 void computeDamageUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN);
95
96 //Interpolation matrices
97 virtual void computeBd_matrixAt(GaussPoint *, FloatMatrix &, int = 1, int = ALL_STRAINS);
98 virtual void computeNd_matrixAt(const FloatArray &lCoords, FloatMatrix &N);
99};
100} // end namespace oofem
101
102#endif
#define N(a, b)
void giveInternalForcesVector_u(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
void giveInternalForcesVector_d(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
double computeDamageAt(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN)
void computeDisplacementUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN)
void computeStiffnessMatrix_dd(FloatMatrix &, MatResponseMode, TimeStep *)
void giveInternalForcesVector(FloatArray &answer, TimeStep *tStep, int useUpdatedGpRecord)
virtual NLStructuralElement * giveElement()=0
void computeNStress_d(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord)
const char * giveClassName() const
virtual void computeStiffnessMatrix(FloatMatrix &, MatResponseMode, TimeStep *)
void computeDamageUnknowns(FloatArray &answer, ValueModeType valueMode, TimeStep *stepN)
virtual void giveDofManDofIDMask_u(IntArray &answer)=0
void computeLocationArrayOfDofIDs(const IntArray &dofIdArray, IntArray &answer)
virtual void computeNd_matrixAt(const FloatArray &lCoords, FloatMatrix &N)
double computeFreeEnergy(GaussPoint *gp, TimeStep *tStep)
double computeGPrim(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN)
virtual void computeBd_matrixAt(GaussPoint *, FloatMatrix &, int=1, int=ALL_STRAINS)
void computeStiffnessMatrix_ud(FloatMatrix &, MatResponseMode, TimeStep *)
void computeBStress_u(FloatArray &answer, GaussPoint *gp, TimeStep *tStep, int useUpdatedGpRecord)
PhaseFieldElement(int i, Domain *aDomain)
virtual void giveDofManDofIDMask_d(IntArray &answer)=0
double computeG(GaussPoint *gp, ValueModeType valueMode, TimeStep *stepN)
void computeStiffnessMatrix_uu(FloatMatrix &, MatResponseMode, TimeStep *)
void computeStiffnessMatrix_du(FloatMatrix &, MatResponseMode, TimeStep *)
#define ALL_STRAINS

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011