SUBROUTINE HYPELA(D,G,E,DE,S,T,DT,MGENS,M,NN,LAYER,MAT, * MDI,MSHEAR) 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' C CALLED BY THRUH 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 T STATE VARIABLES C DT INCREMENT OF STATE VARIABLES C NGENS SIZE OF STRESS - STRAIN LAW C M ELEMENT NUMBER C NN INTEGRATION POINT NUMBER C LAYER LAYER NUMBER C MAT MATERIAL I.D. C NDI NUMBER OF DIRECT COMPONENTS C NSHEAR NUMBER OF SHEAR COMPONENTS C C* * * * * * DIMENSION E(1),DE(1),T(1),DT(1),G(1),D(NGENS,NGENS),S(1) DIMENSION DS(6),eo(22),so(22) C C THIS ROUTINE SET UP FOR PLANE STRESS ONLY C C WARNING!!! THIS ROUTINE IS NOT SET UP FOR TEMPERATURE C DEPENDENT PROPERTIES C C ALL QUANTITIES ARE IN LOCAL SYSTEM DEFINED IN ORIENT C data eo/0.0,0.25e-2,0.49e-2,0.74e-2,0.99e-2,0.0124,0.0148, 1 0.0174,0.0198,0.02465,0.0295,0.03435,0.0392,0.04395, 2 0.0487,0.05,0.055,0.06,0.065,0.07,0.075,0.08/ data so/0.0,18720.,34059.,47000.,58500.,65280.,71000., 1 74786.,76350.,78592.,79567.,80541.,81516.,82491., 2 83465.,84000.,85000.,86000.,87000.,88000.,89000.,9e4/ if((inc.ne.0).or.(m.gt.1)) goto 401 write(6,994) eo 994 format(' strain data ' 8f10.4) write(6,993) so 993 format(' stress data ' 8f10.1) 401 continue I1=2*NOSLPS*(MAT-1) IESLX=I1+IESL IGSLX=I1+IGSL ISHRSX=I1+ISHRSL C C DEFINE ELASTIC PROPERTIES C THESE COULD BE ORTHOTHROPIC WITH RESPECT TO PREFERRED ORIENTATION C ET(1)=(so(2)-so(1))/(eo(2)-eo(1)) et(2) = et(1) et(3) = et(1) XU(1)=0.3 xu(2)=xu(1) xu(3)=xu(1) SHRMOD(1)= et(1)/(2*(1+xu(1))) shrmod(2)=shrmod(1) shrmod(3)=shrmod(1) if ((m.gt.1).or.(inc.gt.0)) goto 301 write(6,996) et,xu,shrmod 996 format(' original data ',3e15.4) 301 continue C C find current line segement c c skip any calculation if inc = 0 or 1 if (inc.eq.0) goto 101 c find equivalent strain estr = (e(1)**2+e(2)**2) if (estr .le. 0.0) estr = 1e-6 eeq = sqrt(estr) if ((m.eq.1).and.(inc.gt.1)) write (6,997) estr,eeq 997 format(' equivalent strain ', 2e10.4) do 78 i = 1,22 if ((eeq.gt.eo(i)).and.(eeq.lt.eo(i+1))) then ii = i ij = i + 1 if((m.eq.1).or.(m.eq.22)) write(6,1001) m,ii,ij 1001 format(' pointer on curve ', 3i5) else continue endif 78 continue C C find current et young's modulus c et(1) = (so(ij)-so(ii))/(eo(ii)-eo(ij)) shrmod(1) = et(1)/(2*(1+xu(1))) et(2) = et(1) et(3) = et(1) shrmod(2)=shrmod(1) shrmod(3)=shrmod(1) if((m.eq.1).or.(m.eq.22)) then write(6,999) et,xu,shrmod 999 format(' calculated data ',3e15.4) else continue endif C C FORM ELASTIC STRESS - STRAIN LAW C 101 continue do 22 i=1,ngens do 33 j=1,ngens D(i,j)= 0.0 33 continue 22 continue po = xu(1) AC = et(1)/(1-po**2) D(1,1)= ac D(2,1)= ac*po D(1,2)= ac*po D(2,2)= ac D(3,3)= shrmod(1) if((m.eq.1).or.(m.eq.22)) then write (6,998) ac,po,d 998 format(' ac,po and d matrix ',2e15.4,/,3f15.4,/,3e15.4,/,3e15.4) else continue endif C C FORM INCREMENT OF STRESS C CALL GMPRD(D,DE,DS,NGENS,NGENS,1) C C ADD INCREMENTAL STRESS TO TOTAL STRESS C CALL GMADD(S,DS,S,NGENS,1) RETURN END --=====================_838325111==_--