탄소성 변형 관련 서브루틴 (uyield.f90)¶
탄소성 강성 행렬 및 응력의 return mapping을 계산하기 위한 서브루틴을 제공한다.
사용자 정의 항복 함수를 사용하는 경우 먼저 입력 파일에 !PLASTIC, YIELD=USER를 설정하고 필요한 재료 상수를 입력한 뒤,
다음으로 함수 uElastoPlasticNumStatus와 서브루틴 uElastoPlasticMatrix 및 uBackwardEuler
을 작성해야 한다.
(1) 실수형 상태 변수의 개수를 반환하는 함수¶
matl: 재료 상수를 저장하는 배열(1-100: 시스템 정의 재료 상수, 101-200: 사용자 정의 재료 상수)
(2) 탄소성 강성 행렬 계산 서브루틴¶
subroutine uElastoPlasticMatrix( matl, stress, istat, fstat, plstrain, D, temp, hdflag )
real(kind=kreal), intent(in) :: matl(:)
real(kind=kreal), intent(in) :: stress(6)
integer(kind=kint), intent(in) :: istat
real(kind=kreal), intent(in) :: fstat(:)
real(kind=kreal), intent(in) :: plstrain
real(kind=kreal), intent(out) :: D(:,:)
real(kind=kreal), intent(in) :: temp
integer(kind=kint), intent(in) :: hdflag
matl: 재료 상수를 저장하는 배열(1-100: 시스템 정의 재료 상수, 101-200: 사용자 정의 재료 상수)stress: 2nd Piola-Kirchhoff 응력istat: 정수형 상태 변수fstat: 실수형 상태 변수 배열plstrain: 현재 서브스텝 시작 시점의 소성 변형률D: 탄소성 행렬temp: 온도hdflag: 전체 성분(0), 편차 성분만(1), 체적 성분만(2) 계산
(3) 응력 Return mapping 계산 서브루틴¶
subroutine uBackwardEuler( matl, stress, plstrain, istat, fstat, temp, hdflag )
real(kind=kreal), intent(in) :: matl(:)
real(kind=kreal), intent(inout) :: stress(6)
real(kind=kreal), intent(in) :: plstrain
integer(kind=kint), intent(inout) :: istat
real(kind=kreal), intent(inout) :: fstat(:)
real(kind=kreal), intent(in) :: temp
integer(kind=kint), intent(in) :: hdflag
matl: 재료 상수를 저장하는 배열(1-100: 시스템 정의 재료 상수, 101-200: 사용자 정의 재료 상수)stress: trial stress의 탄성 변형을 가정하여 얻은 2nd Piola-Kirchhoff 응력plstrain: 현재 서브스텝 시작 시점의 소성 변형률istat: 정수형 상태 변수fstat: 실수형 상태 변수 배열temp: 온도hdflag: 전체 성분(0), 편차 성분만(1), 체적 성분만(2) 계산