more meaningful error messages

This commit is contained in:
Martin Diehl 2018-09-12 14:03:45 +02:00
parent 3d49c70dbc
commit f1f8922ab8
2 changed files with 54 additions and 23 deletions

View File

@ -1458,6 +1458,10 @@ subroutine IO_error(error_ID,el,ip,g,instance,ext_msg)
msg = 'empty list' msg = 'empty list'
case (143_pInt) case (143_pInt)
msg = 'no value found for key' msg = 'no value found for key'
case (144_pInt)
msg = 'negative number of systems'
case (145_pInt)
msg = 'to many systems requested'
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
! material error messages and related messages in mesh ! material error messages and related messages in mesh

View File

@ -1957,6 +1957,7 @@ pure function lattice_symmetrizeC66(struct,C66)
end function lattice_symmetrizeC66 end function lattice_symmetrizeC66
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief Symmetrizes 2nd order tensor according to lattice type !> @brief Symmetrizes 2nd order tensor according to lattice type
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
@ -2090,6 +2091,32 @@ pure function lattice_qDisorientation(Q1, Q2, struct)
end function lattice_qDisorientation end function lattice_qDisorientation
!function lattice_nonSchmidMatrix
! coordinateSystem = buildCoordinateSystem(Nslip,int(LATTICE_BCC_SYSTEMSLIP,pInt),structure)
!
! do i = 1_pInt,myNslip ! assign slip system vectors
! direction = coordinateSystem(1:3,1,i)
! normal = coordinateSystem(1:3,1,i)
! ! "np" and "nn" according to Gröger_etal2008, Acta Materialia 56 (2008) 54125425, table 1 (corresponds to their "n1" for positive and negative slip direction respectively)
! np = math_mul33x3(math_axisAngleToR(sdU,+60.0_pReal*INRAD), normal)
! ! Schmid matrices with non-Schmid contributions according to Koester_etal2012, Acta Materialia 60 (2012) 38943901, eq. (17) ("n1" is replaced by either "np" or "nn" according to either positive or negative slip direction)
! nonSchmidMatrix_pos(1:3,1:3,1,i) = math_tensorproduct33(direction, np)
! nonSchmidMatrix_pos(1:3,1:3,2,i) = math_tensorproduct33(math_crossproduct(normal, direction), normal)
! nonSchmidMatrix_pos(1:3,1:3,3,i) = math_tensorproduct33(math_crossproduct(np, direction), np)
! nonSchmidMatrix_pos(1:3,1:3,4,i) = math_tensorproduct33(normal, normal)
! nonSchmidMatrix_pos(1:3,1:3,5,i) = math_tensorproduct33(math_crossproduct(normal, direction), math_crossproduct(normal, direction))
! nonSchmidMatrix_pos(1:3,1:3,6,i) = math_tensorproduct33(direction, direction)
!
! nn = math_mul33x3(math_axisAngleToR(-sdU,60.0_pReal*INRAD), normal)
! sns(1:3,1:3,2,1,i) = math_tensorproduct33(-sdU, nn)
! sns(1:3,1:3,2,2,i) = math_tensorproduct33(math_crossproduct(snU, -sdU), snU)
! sns(1:3,1:3,2,3,i) = math_tensorproduct33(math_crossproduct(nn, -sdU), nn)
! sns(1:3,1:3,2,4,i) = math_tensorproduct33(snU, snU)
! sns(1:3,1:3,2,5,i) = math_tensorproduct33(math_crossproduct(snU, -sdU), math_crossproduct(snU, -sdU))
! sns(1:3,1:3,2,6,i) = math_tensorproduct33(-sdU, -sdU)
! enddo
!end function lattice_nonSchmidMatrix
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief Populates reduced slip-slip interaction matrix !> @brief Populates reduced slip-slip interaction matrix
!> ToDo: prefix "2" needed as long as deprecated array lattice_interactionSlipSlip exists !> ToDo: prefix "2" needed as long as deprecated array lattice_interactionSlipSlip exists
@ -2121,11 +2148,11 @@ function lattice_interactionSlipSlip2(Nslip,interactionValues,structure)
interactionSlipSlip = lattice_bct_interactionSlipSlip interactionSlipSlip = lattice_bct_interactionSlipSlip
NslipMax = lattice_bct_Nslip NslipMax = lattice_bct_Nslip
case default case default
write(6,*) 'mist' call IO_error(132_pInt,ext_msg=trim(structure)//' (slip slip interaction)')
end select end select
!if (size(Ntwin) > count(Ntwin > 0_pInt)) call IO_error(150_pInt,ext_msg='Ntwin') if (any(Nslip(1:size(Nslip)) - Nslip < 0_pInt)) &
!if (any(NtwinMax(1:size(Ntwin)) -Ntwin < 0_pInt)) call IO_error(150_pInt,ext_msg='Ntwin') call IO_error(145_pInt,ext_msg='Ntrans '//trim(structure))
lattice_interactionSlipSlip2 = & lattice_interactionSlipSlip2 = &
buildInteraction(Nslip,Nslip,NslipMax,NslipMax,interactionValues,interactionSlipSlip) buildInteraction(Nslip,Nslip,NslipMax,NslipMax,interactionValues,interactionSlipSlip)
@ -2161,11 +2188,11 @@ function lattice_interactionTwinTwin2(Ntwin,interactionValues,structure)
interactionTwinTwin = lattice_hex_interactionTwinTwin interactionTwinTwin = lattice_hex_interactionTwinTwin
NtwinMax = lattice_hex_Ntwin NtwinMax = lattice_hex_Ntwin
case default case default
write(6,*) 'mist' call IO_error(132_pInt,ext_msg=trim(structure)//' (twin twin interaction)')
end select end select
!if (size(Ntwin) > count(Ntwin > 0_pInt)) call IO_error(150_pInt,ext_msg='Ntwin') if (any(Ntwin(1:size(Ntwin)) - Ntwin < 0_pInt)) &
!if (any(NtwinMax(1:size(Ntwin)) -Ntwin < 0_pInt)) call IO_error(150_pInt,ext_msg='Ntwin') call IO_error(145_pInt,ext_msg='Ntrans '//trim(structure))
lattice_interactionTwinTwin2 = & lattice_interactionTwinTwin2 = &
buildInteraction(Ntwin,Ntwin,NtwinMax,NtwinMax,interactionValues,interactionTwinTwin) buildInteraction(Ntwin,Ntwin,NtwinMax,NtwinMax,interactionValues,interactionTwinTwin)
@ -2196,11 +2223,11 @@ function lattice_interactionTransTrans2(Ntrans,interactionValues,structure,targe
interactionTransTrans = lattice_fccToHex_interactionTransTrans interactionTransTrans = lattice_fccToHex_interactionTransTrans
NtransMax = lattice_fcc_Ntrans NtransMax = lattice_fcc_Ntrans
else else
write(6,*) 'mist' call IO_error(132_pInt,ext_msg=trim(structure)//' => '//trim(targetStructure))
end if end if
!if (size(Ntwin) > count(Ntwin > 0_pInt)) call IO_error(150_pInt,ext_msg='Ntwin') if (any(Ntrans(1:size(Ntrans)) - Ntrans < 0_pInt)) &
!if (any(NtwinMax(1:size(Ntwin)) -Ntwin < 0_pInt)) call IO_error(150_pInt,ext_msg='Ntwin') call IO_error(145_pInt,ext_msg='Ntrans '//trim(structure))
lattice_interactionTransTrans2 = & lattice_interactionTransTrans2 = &
buildInteraction(Ntrans,Ntrans,NtransMax,NtransMax,interactionValues,interactionTransTrans) buildInteraction(Ntrans,Ntrans,NtransMax,NtransMax,interactionValues,interactionTransTrans)
@ -2211,7 +2238,7 @@ end function lattice_interactionTransTrans2
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief Calculates Schmid matrix for active slip systems !> @brief Calculates Schmid matrix for active slip systems
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
function lattice_SchmidSlip(Nslip,structure,cOverA) function lattice_SchmidMatrix_slip(Nslip,structure,cOverA)
use IO, only: & use IO, only: &
IO_error IO_error
use math, only: & use math, only: &
@ -2220,7 +2247,7 @@ function lattice_SchmidSlip(Nslip,structure,cOverA)
implicit none implicit none
integer(pInt), dimension(:), intent(in) :: Nslip !< number of active slip systems per family integer(pInt), dimension(:), intent(in) :: Nslip !< number of active slip systems per family
character(len=*), intent(in) :: structure !< lattice structure character(len=*), intent(in) :: structure !< lattice structure
real(pReal), dimension(3,3,sum(Nslip)) :: lattice_SchmidSlip real(pReal), dimension(3,3,sum(Nslip)) :: lattice_SchmidMatrix_slip
real(pReal), intent(in), optional :: & real(pReal), intent(in), optional :: &
cOverA cOverA
@ -2237,21 +2264,21 @@ function lattice_SchmidSlip(Nslip,structure,cOverA)
case('bct') case('bct')
coordinateSystem = buildCoordinateSystem(Nslip,int(LATTICE_BCT_SYSTEMSLIP,pInt),structure,cOverA) coordinateSystem = buildCoordinateSystem(Nslip,int(LATTICE_BCT_SYSTEMSLIP,pInt),structure,cOverA)
case default case default
call IO_error(130_pInt,ext_msg=trim(structure)//' (lattice_SchmidSlip)') call IO_error(130_pInt,ext_msg=trim(structure)//' (lattice_SchmidMatrix_slip)')
end select end select
do i = 1, sum(Nslip) do i = 1, sum(Nslip)
lattice_SchmidSlip(1:3,1:3,i) = & lattice_SchmidMatrix_slip(1:3,1:3,i) = &
math_tensorproduct33(coordinateSystem(1:3,1,i),coordinateSystem(1:3,2,i)) math_tensorproduct33(coordinateSystem(1:3,1,i),coordinateSystem(1:3,2,i))
enddo enddo
end function lattice_SchmidSlip end function lattice_SchmidMatrix_slip
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
!> @brief Calculates Schmid matrix for active twin systems !> @brief Calculates Schmid matrix for active twin systems
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------
function lattice_SchmidTwin(Ntwin,structure,cOverA) function lattice_SchmidMatrix_twin(Ntwin,structure,cOverA)
use IO, only: & use IO, only: &
IO_error IO_error
use math, only: & use math, only: &
@ -2260,7 +2287,7 @@ function lattice_SchmidTwin(Ntwin,structure,cOverA)
implicit none implicit none
integer(pInt), dimension(:), intent(in) :: Ntwin !< number of active twin systems per family integer(pInt), dimension(:), intent(in) :: Ntwin !< number of active twin systems per family
character(len=*), intent(in) :: structure !< lattice structure character(len=*), intent(in) :: structure !< lattice structure
real(pReal), dimension(3,3,sum(Ntwin)) :: lattice_SchmidTwin real(pReal), dimension(3,3,sum(Ntwin)) :: lattice_SchmidMatrix_Twin
real(pReal), intent(in), optional :: & real(pReal), intent(in), optional :: &
cOverA cOverA
@ -2269,21 +2296,21 @@ function lattice_SchmidTwin(Ntwin,structure,cOverA)
select case(structure) select case(structure)
case('fcc') case('fcc')
coordinateSystem = buildCoordinateSystem(Nslip,int(LATTICE_FCC_SYSTEMTWIN,pInt),structure) coordinateSystem = buildCoordinateSystem(Ntwin,int(LATTICE_FCC_SYSTEMTWIN,pInt),structure)
case('bcc') case('bcc')
coordinateSystem = buildCoordinateSystem(Nslip,int(LATTICE_BCC_SYSTEMTWIN,pInt),structure) coordinateSystem = buildCoordinateSystem(Ntwin,int(LATTICE_BCC_SYSTEMTWIN,pInt),structure)
case('hex','hexagonal') !ToDo: "No alias policy": long or short? case('hex','hexagonal') !ToDo: "No alias policy": long or short?
coordinateSystem = buildCoordinateSystem(Nslip,int(LATTICE_HEX_SYSTEMTWIN,pInt),'hex',cOverA) coordinateSystem = buildCoordinateSystem(Ntwin,int(LATTICE_HEX_SYSTEMTWIN,pInt),'hex',cOverA)
case default case default
call IO_error(130_pInt,ext_msg=trim(structure)//' (lattice_SchmidTwin)') call IO_error(130_pInt,ext_msg=trim(structure)//' (lattice_SchmidMatrix_twin)')
end select end select
do i = 1, sum(Nslip) do i = 1, sum(Ntwin)
lattice_SchmidTwin(1:3,1:3,i) = & lattice_SchmidMatrix_twin(1:3,1:3,i) = &
math_tensorproduct33(coordinateSystem(1:3,1,i),coordinateSystem(1:3,2,i)) math_tensorproduct33(coordinateSystem(1:3,1,i),coordinateSystem(1:3,2,i))
enddo enddo
end function lattice_SchmidTwin end function lattice_SchmidMatrix_twin
!-------------------------------------------------------------------------------------------------- !--------------------------------------------------------------------------------------------------