콘텐츠로 이동

탄소성 변형 관련 서브루틴 (uyield.f90)

탄소성 강성 행렬 및 응력의 return mapping을 계산하기 위한 서브루틴을 제공한다. 사용자 정의 항복 함수를 사용하는 경우 먼저 입력 파일에 !PLASTIC, YIELD=USER를 설정하고 필요한 재료 상수를 입력한 뒤, 다음으로 함수 uElastoPlasticNumStatus와 서브루틴 uElastoPlasticMatrixuBackwardEuler 을 작성해야 한다.

(1) 실수형 상태 변수의 개수를 반환하는 함수

integer function uElastoPlasticNumStatus( matl )
    real(kind=kreal),   intent(in)  :: matl(:)
  • 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) 계산