polishing
This commit is contained in:
parent
853f73400e
commit
77e7e3d3c4
|
@ -255,7 +255,7 @@ subroutine hypela2(d,g,e,de,s,t,dt,ngens,m,nn,kcus,matus,ndi,nshear,disp, &
|
|||
outdatedByNewInc = .false., & !< needs description
|
||||
CPFEM_init_done = .false. !< remember whether init has been done already
|
||||
class(tNode), pointer :: &
|
||||
debug_Marc
|
||||
debug_Marc ! pointer to Marc debug options
|
||||
|
||||
defaultNumThreadsInt = omp_get_num_threads() ! remember number of threads set by Marc
|
||||
call omp_set_num_threads(1) ! no openMP
|
||||
|
|
|
@ -37,37 +37,37 @@ module constitutive
|
|||
|
||||
module subroutine plastic_none_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_none_init
|
||||
|
||||
module subroutine plastic_isotropic_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_isotropic_init
|
||||
|
||||
module subroutine plastic_phenopowerlaw_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_phenopowerlaw_init
|
||||
|
||||
module subroutine plastic_kinehardening_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_kinehardening_init
|
||||
|
||||
module subroutine plastic_dislotwin_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_dislotwin_init
|
||||
|
||||
module subroutine plastic_disloUCLA_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_disloUCLA_init
|
||||
|
||||
module subroutine plastic_nonlocal_init(debug_constitutive)
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_nonlocal_init
|
||||
|
||||
|
||||
|
@ -84,7 +84,7 @@ module constitutive
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_isotropic_LpAndItsTangent
|
||||
|
||||
pure module subroutine plastic_phenopowerlaw_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of)
|
||||
|
@ -175,7 +175,7 @@ module constitutive
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_isotropic_LiAndItsTangent
|
||||
|
||||
|
||||
|
@ -239,7 +239,7 @@ module constitutive
|
|||
ip, & !< current integration point
|
||||
el !< current element number
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_nonlocal_dotState
|
||||
|
||||
|
||||
|
@ -268,7 +268,7 @@ module constitutive
|
|||
ip, &
|
||||
el
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_nonlocal_dependentState
|
||||
|
||||
|
||||
|
@ -279,7 +279,7 @@ module constitutive
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_kinehardening_deltaState
|
||||
|
||||
module subroutine plastic_nonlocal_deltaState(Mp,instance,of,ip,el,debug_constitutive)
|
||||
|
@ -291,7 +291,7 @@ module constitutive
|
|||
ip, &
|
||||
el
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
end subroutine plastic_nonlocal_deltaState
|
||||
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ contains
|
|||
module subroutine plastic_disloUCLA_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
|
|
@ -125,7 +125,7 @@ contains
|
|||
module subroutine plastic_dislotwin_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
|
|
@ -52,7 +52,7 @@ contains
|
|||
module subroutine plastic_isotropic_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
@ -173,7 +173,7 @@ module subroutine plastic_isotropic_LpAndItsTangent(Lp,dLp_dMp,Mp,instance,of,de
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
real(pReal), dimension(3,3) :: &
|
||||
Mp_dev !< deviatoric part of the Mandel stress
|
||||
|
@ -236,7 +236,7 @@ module subroutine plastic_isotropic_LiAndItsTangent(Li,dLi_dMi,Mi,instance,of,de
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
real(pReal) :: &
|
||||
tr !< trace of spherical part of Mandel stress (= 3 x pressure)
|
||||
|
|
|
@ -61,7 +61,7 @@ contains
|
|||
module subroutine plastic_kinehardening_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
@ -324,7 +324,7 @@ module subroutine plastic_kinehardening_deltaState(Mp,instance,of,debug_constitu
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
real(pReal), dimension(param(instance)%sum_N_sl) :: &
|
||||
gdot_pos,gdot_neg, &
|
||||
|
|
|
@ -15,7 +15,7 @@ contains
|
|||
module subroutine plastic_none_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
|
|
@ -166,7 +166,7 @@ contains
|
|||
module subroutine plastic_nonlocal_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
@ -536,7 +536,7 @@ module subroutine plastic_nonlocal_dependentState(F, Fp, instance, of, ip, el,de
|
|||
ip, &
|
||||
el
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
no, & !< neighbor offset
|
||||
|
@ -854,7 +854,7 @@ module subroutine plastic_nonlocal_deltaState(Mp,instance,of,ip,el,debug_constit
|
|||
ip, &
|
||||
el
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
ph, & !< phase
|
||||
|
@ -973,7 +973,7 @@ module subroutine plastic_nonlocal_dotState(Mp, F, Fp, Temperature,timestep, &
|
|||
ip, & !< current integration point
|
||||
el !< current element number
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
ph, &
|
||||
|
@ -1177,7 +1177,7 @@ function rhoDotFlux(F,Fp,timestep, instance,of,ip,el,debug_constitutive)
|
|||
ip, & !< current integration point
|
||||
el !< current element number
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
ph, &
|
||||
|
|
|
@ -69,7 +69,7 @@ contains
|
|||
module subroutine plastic_phenopowerlaw_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
|
|
@ -131,7 +131,7 @@ subroutine crystallite_init
|
|||
|
||||
class(tNode) , pointer :: &
|
||||
num_crystallite, &
|
||||
debug_crystallite
|
||||
debug_crystallite ! pointer to debug options for crystallite
|
||||
|
||||
write(6,'(/,a)') ' <<<+- crystallite init -+>>>'
|
||||
|
||||
|
|
|
@ -14,8 +14,8 @@ module debug
|
|||
implicit none
|
||||
private
|
||||
|
||||
class(tNode), pointer, public :: &
|
||||
debug_root
|
||||
class(tNode), pointer, protected, public :: &
|
||||
debug_root !< root pointer storing the debug YAML structure
|
||||
|
||||
public :: debug_init
|
||||
|
||||
|
|
|
@ -94,7 +94,7 @@ program DAMASK_grid
|
|||
class (tNode), pointer :: &
|
||||
num_grid, &
|
||||
num_generic, &
|
||||
debug_grid
|
||||
debug_grid ! pointer to grid debug options
|
||||
|
||||
!--------------------------------------------------------------------------------------------------
|
||||
! init DAMASK (all modules)
|
||||
|
|
|
@ -506,7 +506,7 @@ subroutine formResidual(da_local,x_local, &
|
|||
itmax
|
||||
class(tNode), pointer :: &
|
||||
num_generic, &
|
||||
debug_grid
|
||||
debug_grid ! pointer to grid debug options
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! debug pointer to grid
|
||||
|
|
|
@ -475,7 +475,7 @@ subroutine formResidual(in, F, &
|
|||
itmax
|
||||
class(tNode), pointer :: &
|
||||
num_generic, &
|
||||
debug_grid
|
||||
debug_grid ! pointer to constitutive debug options
|
||||
|
||||
!---------------------------------------------------------------------
|
||||
! debug pointer to grid
|
||||
|
|
|
@ -535,7 +535,7 @@ subroutine formResidual(in, FandF_tau, &
|
|||
class(tNode), pointer :: &
|
||||
num_grid, &
|
||||
num_generic, &
|
||||
debug_grid
|
||||
debug_grid ! pointer to grid debug options
|
||||
real(pReal) :: &
|
||||
polarAlpha, & !< polarization scheme parameter 0.0 < alpha < 2.0. alpha = 1.0 ==> AL scheme, alpha = 2.0 ==> accelerated scheme
|
||||
polarBeta !< polarization scheme parameter 0.0 < beta < 2.0. beta = 1.0 ==> AL scheme, beta = 2.0 ==> accelerated scheme
|
||||
|
|
|
@ -195,7 +195,7 @@ subroutine spectral_utilities_init
|
|||
class (tNode) , pointer :: &
|
||||
num_grid, &
|
||||
num_generic, &
|
||||
debug_grid
|
||||
debug_grid ! pointer to grid debug options
|
||||
|
||||
write(6,'(/,a)') ' <<<+- spectral_utilities init -+>>>'
|
||||
|
||||
|
|
|
@ -56,18 +56,18 @@ module homogenization
|
|||
|
||||
module subroutine mech_none_init(debug_homogenization)
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
end subroutine mech_none_init
|
||||
|
||||
module subroutine mech_isostrain_init(debug_homogenization)
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
end subroutine mech_isostrain_init
|
||||
|
||||
module subroutine mech_RGC_init(num_homogMech, debug_homogenization)
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
num_homogMech, &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
end subroutine mech_RGC_init
|
||||
|
||||
|
||||
|
@ -84,7 +84,7 @@ module homogenization
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
end subroutine mech_RGC_partitionDeformation
|
||||
|
||||
|
||||
|
@ -112,14 +112,14 @@ module homogenization
|
|||
P,& !< partitioned stresses
|
||||
F,& !< partitioned deformation gradients
|
||||
F0 !< partitioned initial deformation gradients
|
||||
real(pReal), dimension(:,:,:,:,:), intent(in) :: dPdF !< partitioned stiffnesses
|
||||
real(pReal), dimension(3,3), intent(in) :: avgF !< average F
|
||||
real(pReal), intent(in) :: dt !< time increment
|
||||
real(pReal), dimension(:,:,:,:,:), intent(in) :: dPdF !< partitioned stiffnesses
|
||||
real(pReal), dimension(3,3), intent(in) :: avgF !< average F
|
||||
real(pReal), intent(in) :: dt !< time increment
|
||||
integer, intent(in) :: &
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
ip, & !< integration point number
|
||||
el !< element number
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
end function mech_RGC_updateState
|
||||
|
||||
|
||||
|
@ -152,8 +152,8 @@ subroutine homogenization_init
|
|||
debug_g, &
|
||||
debug_e
|
||||
|
||||
num_homog => numerics_root%get('homogenization',defaultVal=emptyDict)
|
||||
num_homogMech => num_homog%get('mech',defaultVal=emptyDict)
|
||||
num_homog => numerics_root%get('homogenization',defaultVal=emptyDict)
|
||||
num_homogMech => num_homog%get('mech',defaultVal=emptyDict)
|
||||
num_homogGeneric => num_homog%get('generic',defaultVal=emptyDict)
|
||||
|
||||
debug_homogenization => debug_root%get('homogenization',defaultVal=emptyList)
|
||||
|
|
|
@ -79,8 +79,7 @@ module subroutine mech_RGC_init(num_homogMech,debug_homogenization)
|
|||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
num_homogMech, &
|
||||
debug_homogenization
|
||||
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
h, &
|
||||
|
@ -214,8 +213,7 @@ module subroutine mech_RGC_partitionDeformation(F,avgF,instance,of,debug_homogen
|
|||
instance, &
|
||||
of
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
real(pReal), dimension(3) :: aVect,nVect
|
||||
integer, dimension(4) :: intFace
|
||||
integer, dimension(3) :: iGrain3
|
||||
|
@ -668,7 +666,7 @@ module procedure mech_RGC_updateState
|
|||
real(pReal), dimension (:,:,:), intent(in) :: fDef !< deformation gradients
|
||||
real(pReal), dimension (3,3), intent(in) :: avgF !< initial effective stretch tensor
|
||||
integer, intent(in) :: ip,el,instance,of
|
||||
class(tNode), pointer, intent(in) :: debug_homogenization
|
||||
class(tNode), pointer, intent(in) :: debug_homogenization !< pointer to debug options for homogenization
|
||||
|
||||
integer, dimension (4) :: intFace
|
||||
integer, dimension (3) :: iGrain3,iGNghb3,nGDim
|
||||
|
@ -783,7 +781,7 @@ module procedure mech_RGC_updateState
|
|||
Ngrain, &
|
||||
instance, &
|
||||
of
|
||||
class(tNode), pointer, intent(in) :: debug_homogenization
|
||||
class(tNode), pointer, intent(in) :: debug_homogenization !< pointer to debug options for homogenization
|
||||
|
||||
real(pReal), dimension(size(vPen,3)) :: gVol
|
||||
integer :: i
|
||||
|
|
|
@ -29,7 +29,7 @@ contains
|
|||
module subroutine mech_isostrain_init(debug_homogenization)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
|
|
@ -14,7 +14,7 @@ contains
|
|||
module subroutine mech_none_init(debug_homogenization)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_homogenization
|
||||
debug_homogenization !< pointer to debug options for homogenization
|
||||
|
||||
integer :: &
|
||||
Ninstance, &
|
||||
|
|
|
@ -46,7 +46,7 @@ contains
|
|||
subroutine kinematics_cleavage_opening_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,p
|
||||
integer, dimension(:), allocatable :: N_cl !< active number of cleavage systems per family
|
||||
|
|
|
@ -48,7 +48,7 @@ contains
|
|||
subroutine kinematics_slipplane_opening_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,p,i
|
||||
character(len=pStringLen) :: extmsg = ''
|
||||
|
|
|
@ -41,7 +41,7 @@ contains
|
|||
subroutine kinematics_thermal_expansion_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,p,i
|
||||
real(pReal), dimension(:), allocatable :: temp
|
||||
|
|
|
@ -217,7 +217,7 @@ subroutine material_init(restart)
|
|||
CounterPhase, &
|
||||
CounterHomogenization
|
||||
class(tNode), pointer :: &
|
||||
debug_material
|
||||
debug_material ! pointer to material debug options
|
||||
|
||||
write(6,'(/,a)') ' <<<+- material init -+>>>'; flush(6)
|
||||
|
||||
|
|
|
@ -105,7 +105,7 @@ subroutine FEM_utilities_init
|
|||
class(tNode), pointer :: &
|
||||
num_mesh, &
|
||||
num_generic, &
|
||||
debug_mesh
|
||||
debug_mesh ! pointer to mesh debug options
|
||||
integer :: structOrder !< order of displacement shape functions
|
||||
character(len=pStringLen) :: &
|
||||
petsc_options, &
|
||||
|
|
|
@ -56,7 +56,7 @@ contains
|
|||
subroutine source_damage_anisoBrittle_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer , intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||
integer, dimension(:), allocatable :: N_cl
|
||||
|
|
|
@ -49,7 +49,7 @@ contains
|
|||
subroutine source_damage_anisoDuctile_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||
integer, dimension(:), allocatable :: N_sl
|
||||
|
|
|
@ -48,7 +48,7 @@ contains
|
|||
subroutine source_damage_isoBrittle_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||
character(len=pStringLen) :: extmsg = ''
|
||||
|
|
|
@ -48,7 +48,7 @@ contains
|
|||
subroutine source_damage_isoDuctile_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||
character(len=pStringLen) :: extmsg = ''
|
||||
|
|
|
@ -41,7 +41,7 @@ contains
|
|||
subroutine source_thermal_dissipation_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ contains
|
|||
subroutine source_thermal_externalheat_init(debug_constitutive)
|
||||
|
||||
class(tNode), pointer, intent(in) :: &
|
||||
debug_constitutive
|
||||
debug_constitutive !< pointer to constitutive debug options
|
||||
|
||||
integer :: Ninstance,sourceOffset,NipcMyPhase,p
|
||||
|
||||
|
|
Loading…
Reference in New Issue