***** subroutine hypela(d,g,e,de,s,temp,dtemp,mgens,n,nn,kc,nats, * mdi,mshear) c* * * * * * c c user subroutine to define young's modulus and poisson's ratio c as function of stress in non-linear elastic small strain c material. c c d stress strain law to be formed by user c g change in stress due to temperature effects c e total strain c de increment of strain c s stress - should be updated by user c temp state variables c dtemp increment of state variables c ngens size of stress - strain law c n element number c nn integration point number c kc layer number c mats material i.d. c ndi number of direct components c nshear number of shear components c c* * * * * * implicit real*8 (a-h,o-z) INCLUDE '../common/space' INCLUDE '../common/matdat' INCLUDE '../common/maters' INCLUDE '../common/els' INCLUDE '../common/concom' INCLUDE '../common/elmcom' dimension e(1),de(1),temp(1),dtemp(1),g(1),d(ngens,ngens),s(1) dimension n(2) C* * * * * * C C USER SUBROUTINE TO DEFINE YOUNG'S MODULUS AND POISSON'S RATIO C AS FUNCTION OF TRUE STRAIN IN AN ISOTROPIC, NON-LINEAR ELASTIC, C LARGE STRAIN MATERIAL (UHMWPE). DESIGNED FOR USE WITH MARCK61 C HEXEHEDRAL ELEMENTS. THERMAL CONSIDERATIONS ARE IGNORED. C C CREATED 10/30/95 BY EDWARD MORRA FOR MT SINAI MEDICAL CENTER C C* * * * * * C* * * * * * C C CONSIDER AN EQUATION THAT RELATES TRUE STRESS TO TRUE STRAIN C FOR A UNIAXIAL TEST (COMPRESSION). THE DERIVITIVE OF THAT C FUNCTION DESCRIBES THE TANGENT MODULUS AT ANY GIVEN ELASTIC C STRAIN. INPUT THIS DERIVITIVE EQUATION THAT RELATES THE C TANGENT MODULUS TO TRUE STRAIN FOR A CONTINUOUS DESCRIPTION. C C EQUIVILENT STRAIN: C C eeq = sqrt(e(1)**2+e(2)**2+e(3)**2) C C TANGENT MODULUS AS A FUNCTION OF EQUIVILENT STRAIN: C C et = C5*(eeq)**4+C4*(eeq)**3+C3*(eeq)**2+C2*(eeq)+C1 C C FOR UHMWPE: C1=535.69 C2=-13812.0 C3=160726.0 C C4=-813916.0 C5=1000000.0 C C VALID BOUNDARIES FOR CURVE FIT: 0 < eeq > 0.20 C C SINCE ISOTROPIC: et = et(1) = et(2) = et(3) C C* * * * * * eeq = sqrt(e(1)**2+e(2)**2+e(3)**2) C1=535.69 C2=-13812.0 C3=160726.0 C4=-813916.0 C5=1000000.0 IF (eeq .LT. 0.20) THEN ets = C5*(eeq)**4+C4*(eeq)**3+C3*(eeq)**2+C2*(eeq)+C1 ELSE ets = 4.0 END IF C* * * * * * C C SIMILARLY, POISSONS RATION CAN BE DESCRIBED AS A FUNCTION OF C EQUIVILENT STRAIN: C C xu = C5*(eeq)**4+C4*(eeq)**3+C3*(eeq)**2+C2*(eeq)+C1 C C FOR UHMWPE: C6=0.42 C7=0.0 C8=0.0 C C9=0.0 C10=0.0 C C VALID BOUNDARIES FOR CURVE FIT: 0 < eeq > 0.20 C C SINCE ISOTROPIC: xu = xu(1) = xu(2) = xu(3) C C* * * * * * C6=0.42 C7=0.0 C8=0.0 C9=0.0 C10=0.0 IF (eeq .LT. 0.20) THEN xus = C10*(eeq)**4+C9*(eeq)**3+C8*(eeq)**2+C7*(eeq)+C6 ELSE xus = 0.42 END IF C* * * * * * C C UPDATED STRAIN TO DIFF ORIGINAL THERMAL C STRESS STRESS STRAIN STRESS STRESS C VECTOR MATRIX VECTOR VECTOR VECTOR C C s[6] = d[6,6] * de[6] + s_0[6] + g[6] C C TBD TBD PVD PVD TBD C C TBD = TO BE DETERMINED BY THIS SUBROUTINE C PVD = PROVIDED TO THIS SUBROUTINE C C d[6,6] IS A FUNCTION OF TANGENT MODULUS (ets) AND POISSONS C RATIO (xu). ets AND xus ARE DETERMINED FROM THEIR C RESPECTIVE CURVE FITS, WHICH ARE FUNCTIONS OF eeq C C g[6] IS NOT CALCULATED BECAUSE THERMAL EFFECTS ARE NEGLECTED HERE C C s[6] IS CALCULATED AND PASSED OUT OF THE SUBROUTINE C C* * * * * * C* * * * * * C C FILL d MATRIX WITH ZEROES C C* * * * * * do 22 i=1,ngens do 33 j=1,ngens d(i,j)= 0.0 33 continue 22 continue C* * * * * * C C CALCULATE d MATRIX AND FILL WITH CONSTANTS A B C C C | A B B 0 0 0 | C | | C | B A B 0 0 0 | C | | C | B B A 0 0 0 | C d[6,6] = | | C | 0 0 0 C 0 0 | C | | C | 0 0 0 0 C 0 | C | | C | 0 0 0 0 0 C | C C WHERE: C ( 1 - xu ) C A = -------------------------- * et C ( 1 + xu ) ( 1 - 2*xu ) C C xu C B = -------------------------- * et C ( 1 + xu ) ( 1 - 2*xu ) C C 1 C C = -------------------------- * et C 2 * ( 1 + xu ) C C* * * * * * A = ets*(1.-xus)/((1.+xus)*(1.-2.*xus)) B = ets*(xus/((1.+xus)*(1.-2.*xus))) C = ets/(2.*(1.+xus)) d(1,1)= A d(2,1)= B d(3,1)= B d(1,2)= B d(2,2)= A d(3,2)= B d(1,3)= B d(2,3)= B d(3,3)= A d(4,4)= C d(5,5)= C d(6,6)= C C* * * * * * C C MATRIX PRODUCT: ds[6] = d[6,6] * de[6] C C* * * * * * CALL GMPRD(d,de,ds,ngens,ngens,1) C* * * * * * C C VECTOR ADDITION: s[6] = ds[6] + s_0[6] C C* * * * * * CALL GMADD(s,ds,s,ngens,1) return end