Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F81574683
material_vreepeerlings_tmpl.hh
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Sep 6, 20:15
Size
4 KB
Mime Type
text/x-c++
Expires
Sun, Sep 8, 20:15 (2 d)
Engine
blob
Format
Raw Data
Handle
20596782
Attached To
rAKA akantu
material_vreepeerlings_tmpl.hh
View Options
/**
* @file material_vreepeerlings_tmpl.hh
*
* @author Cyprien Wolff <cyprien.wolff@epfl.ch>
*
*
* @brief Specialization of the material class for the VreePeerlings material
*
*
* Copyright (©) 2010-2012, 2014 EPFL (Ecole Polytechnique Fédérale de Lausanne)
* Laboratory (LSMS - Laboratoire de Simulation en Mécanique des Solides)
*
*/
/* -------------------------------------------------------------------------- */
template
<
Int
spatial_dimension
,
template
<
UInt
>
class
MatParent
>
MaterialVreePeerlings
<
spatial_dimension
,
MatParent
>::
MaterialVreePeerlings
(
SolidMechanicsModel
&
model
,
const
ID
&
id
)
:
Material
(
model
,
id
),
MaterialVreePeerlingsParent
(
model
,
id
),
Kapa
(
"Kapa"
,
*
this
),
strain_rate_vreepeerlings
(
"strain-rate-vreepeerlings"
,
*
this
),
Full_dam_value_strain
(
"fulldam-valstrain"
,
*
this
),
Full_dam_value_strain_rate
(
"fulldam-valstrain-rate"
,
*
this
),
Number_damage
(
"number-damage"
,
*
this
),
equi_strain
(
"equi-strain"
,
*
this
),
equi_strain_rate
(
"equi-strain-rate"
,
*
this
)
{
AKANTU_DEBUG_IN
();
this
->
registerParam
(
"Kapaoi"
,
Kapaoi
,
0.0001
,
_pat_parsable
);
this
->
registerParam
(
"Kapac"
,
Kapac
,
0.0002
,
_pat_parsable
);
this
->
registerParam
(
"Arate"
,
Arate
,
0.
,
_pat_parsable
);
this
->
registerParam
(
"Brate"
,
Brate
,
1.
,
_pat_parsable
);
this
->
registerParam
(
"Crate"
,
Brate
,
1.
,
_pat_parsable
);
this
->
registerParam
(
"Kct"
,
Kct
,
1.
,
_pat_parsable
);
this
->
registerParam
(
"Kapao_randomness"
,
Kapao_randomness
,
0.
,
_pat_parsable
);
this
->
Kapa
.
initialize
(
1
);
this
->
equi_strain
.
initialize
(
1
);
this
->
equi_strain_rate
.
initialize
(
1
);
this
->
Full_dam_value_strain
.
initialize
(
1
);
this
->
Full_dam_value_strain_rate
.
initialize
(
1
);
this
->
Number_damage
.
initialize
(
1
);
this
->
strain_rate_vreepeerlings
.
initialize
(
spatial_dimension
*
spatial_dimension
);
AKANTU_DEBUG_OUT
();
}
/* -------------------------------------------------------------------------- */
template
<
Int
spatial_dimension
,
template
<
UInt
>
class
MatParent
>
void
MaterialVreePeerlings
<
spatial_dimension
,
MatParent
>::
initMaterial
()
{
AKANTU_DEBUG_IN
();
MaterialVreePeerlingsParent
::
initMaterial
();
AKANTU_DEBUG_OUT
();
}
/* -------------------------------------------------------------------------- */
template
<
Int
spatial_dimension
,
template
<
UInt
>
class
MatParent
>
void
MaterialVreePeerlings
<
spatial_dimension
,
MatParent
>::
computeStress
(
ElementType
el_type
,
GhostType
ghost_type
)
{
AKANTU_DEBUG_IN
();
MaterialVreePeerlingsParent
::
computeStress
(
el_type
,
ghost_type
);
Real
*
dam
=
this
->
damage
(
el_type
,
ghost_type
).
data
();
Real
*
equi_straint
=
equi_strain
(
el_type
,
ghost_type
).
data
();
Real
*
equi_straint_rate
=
equi_strain_rate
(
el_type
,
ghost_type
).
data
();
Real
*
Kapaq
=
Kapa
(
el_type
,
ghost_type
).
data
();
Real
*
FullDam_Valstrain
=
Full_dam_value_strain
(
el_type
,
ghost_type
).
data
();
Real
*
FullDam_Valstrain_rate
=
Full_dam_value_strain_rate
(
el_type
,
ghost_type
).
data
();
Real
*
Nb_damage
=
Number_damage
(
el_type
,
ghost_type
).
data
();
Real
dt
=
this
->
model
.
getTimeStep
();
Array
<
Idx
>
&
elem_filter
=
this
->
element_filter
(
el_type
,
ghost_type
);
Array
<
Real
>
&
velocity
=
this
->
model
.
getVelocity
();
Array
<
Real
>
&
strain_rate_vrplgs
=
this
->
strain_rate_vreepeerlings
(
el_type
,
ghost_type
);
this
->
model
.
getFEEngine
().
gradientOnIntegrationPoints
(
velocity
,
strain_rate_vrplgs
,
spatial_dimension
,
el_type
,
ghost_type
,
elem_filter
);
Array
<
Real
>::
matrix_iterator
strain_rate_vrplgs_it
=
strain_rate_vrplgs
.
begin
(
spatial_dimension
,
spatial_dimension
);
MATERIAL_STRESS_QUADRATURE_POINT_LOOP_BEGIN
(
el_type
,
ghost_type
);
Matrix
<
Real
>
&
strain_rate
=
*
strain_rate_vrplgs_it
;
computeStressOnQuad
(
grad_u
,
sigma
,
*
dam
,
*
equi_straint
,
*
equi_straint_rate
,
*
Kapaq
,
dt
,
strain_rate
,
*
FullDam_Valstrain
,
*
FullDam_Valstrain_rate
,
*
Nb_damage
);
++
dam
;
++
equi_straint
;
++
equi_straint_rate
;
++
Kapaq
;
++
strain_rate_vrplgs_it
;
++
FullDam_Valstrain
;
++
FullDam_Valstrain_rate
;
++
Nb_damage
;
MATERIAL_STRESS_QUADRATURE_POINT_LOOP_END
;
AKANTU_DEBUG_OUT
();
}
Event Timeline
Log In to Comment