C ############################################ C Subroutinen zur formatierten Ergebnisausgabe C ############################################ C C C C Bereitstellung eines globalen Moduls aehnlich eines COMMON Blockes C ------------------------------------------------------------------ module global save integer, allocatable :: elem(:,:) real, allocatable :: nodes(:,:) real, allocatable, dimension(:,:) :: SigmaTE real, allocatable, dimension(:,:) :: EpsilonTE real, allocatable, dimension(:,:) :: KraftTE real, allocatable, dimension(:,:) :: KraftTEE real, DIMENSION(9,3) :: Sigma real, DIMENSION(9,3) :: Epsilon C real emodul,vnu,vLB,vLT,vN,Psi C integer shear_flag, CAUCHY_flag, out_flag C integer maxElem, Mat_flag, zaehler end module global SUBROUTINE UEXTERNALDB(LOP,LRESTART,TIME,DTIME,KSTEP,KINC) use global include 'ABA_PARAM.INC' DIMENSION Time(2) CHARACTER*256 JOBNAME CHARACTER xoutdir*255, xfname*80 CHARACTER dmkname*255, fout*100 CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C Bemerkungen: C ------------ C LOP = 0 --->>> start of analysis C LOP = 1 --->>> start of current analysis increment C LOP = 2 --->>> end of current analysis increment C LOP = 3 --->>> end of analysis C [LOP = 4 --->>> beginning of a restart analysis] CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC call GETJOBNAME( xfname, lxfname ) call GETOUTDIR( xoutdir,lxoutdir) 111 FORMAT(F6.0,3(2X,F8.2)) 222 FORMAT(A6,3(2X,A8)) 333 FORMAT(5(F6.2,1X)) 444 FORMAT(9(1X,F6.2)) 55 FORMAT(1X,A50,1X) 66 FORMAT(1X,A2,10X,A25,11X,A2,1X) 77 FORMAT(1X,A2,10X,A20,16X,A2,1X) 88 FORMAT(1X,A2,10X,A15,21X,A2,1X) 1 FORMAT(A1,5X,A17,22X,A10,7X,A5,5X,A1) 2 FORMAT(A5,2X,A10,4X,A10,4X,A10) 22 FORMAT(A5,2X,A10,4X,A10,4X,A10,4X,A10) 3 FORMAT(I5,1X,D13.6,1X,D13.6,1X,D13.6,1X,D13.6,1X,D13.6,1X,D13.6) 4 FORMAT(I5,1X,D13.6,1X,D13.6,1X,D13.6,1X,D13.6) fout = dmkname(xfname(1:lxfname),xoutdir(1:lxoutdir),'.out') C print(*,*)fout IF(LOP.EQ.0) THEN open(101,FILE=fout,STATUS='UNKNOWN') write(101,*)'**************************' write(101,*)' Ergebnisfile ' write(101,*)'**************************' write(101,*)fout Sigma(1:9,1:3)=0. Epsilon(1:9,1:3)=0. ENDIF IF(LOP.EQ.2) THEN write(101,*)'' write(101,*)'Ergebnisausgabe::' write(101,*)'-----------------' write(101,*)'Inkrement: ', KINC write(101,*)'' write(101,2)'IP','Sigma11','Sigma22','Sigma12' DO k=1,9 write(101,4)k, Sigma(k,1), Sigma(k,2), Sigma(k,3) ENDDO write(101,*)'' write(101,22)'IP','Epsilon11','Epsilon22','Epsilon12' DO k=1,9 write(101,4)k,Epsilon(k,1),Epsilon(k,2),Epsilon(k,3) ENDDO write(101,*)'' write(101,*)'**********' Sigma(1:9,1:3)=0. Epsilon(1:9,1:3)=0. ENDIF IF(LOP.EQ.3) THEN write(101,*)'' write(101,*)'###################' write(101,*)' ENDE der Rechnung ' write(101,*)'###################' write(101,*)'' write(101,*)'' write(101,*)'' write(101,*)'' write(101,*)'' close(101) ENDIF RETURN END SUBROUTINE UVARM(UVAR,DIRECT,T,TIME,DTIME,CMNAME,ORNAME, 1 NUVARM,NOEL,NPT,LAYER,KSPT,KSTEP,KINC,NDI,NSHR,COORD, 2 JMAC,JMATYP,MATLAYO,LACCFLA) use global INCLUDE 'ABA_PARAM.INC' C CHARACTER*80 CMNAME,ORNAME CHARACTER*3 FLGRAY(15) DIMENSION UVAR(NUVARM),DIRECT(3,3),T(3,3),TIME(2) DIMENSION ARRAY(15),JARRAY(15),JMAC(*),JMATYP(*),COORD(*) C The dimensions of the variables FLGRAY, ARRAY and JARRAY C must be set equal to or greater than 15. CALL GETVRM('S',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) JERROR = JERROR + JRCD UVAR(1) = ARRAY(1) UVAR(2) = ARRAY(2) UVAR(3) = ARRAY(3) Sigma(NPT,1) = ARRAY(1) Sigma(NPT,2) = ARRAY(2) Sigma(NPT,3) = ARRAY(4) ARRAY(1:15)=0. CALL GETVRM('E',ARRAY,JARRAY,FLGRAY,JRCD,JMAC,JMATYP, 1 MATLAYO,LACCFLA) JERROR = JERROR + JRCD UVAR(1) = ARRAY(1) UVAR(2) = ARRAY(2) UVAR(3) = ARRAY(3) Epsilon(NPT,1) = ARRAY(1) Epsilon(NPT,2) = ARRAY(2) Epsilon(NPT,3) = ARRAY(4) RETURN END C ######################################################################### C ######################################################################### C C Compose a filename directory/jobname.exten character*(*) FUNCTION dmkname(fname,dname,exten) C character*(*) fname,dname,exten C fname I jobname C dname I directory C exten I extension C dmkname O directory/jobname.exten ltot = len(fname) lf = 0 DO k1 = ltot,2,-1 if (lf.EQ.0.AND.fname(k1:k1).NE.' ') lf = k1 END DO ltot = len(dname) ld = 0 DO k1 = ltot,2,-1 IF (ld.EQ.0.AND.dname(k1:k1).NE.' ') ld = k1 END DO ltot = len(exten) le = 0 DO k1 = ltot,2,-1 IF (le.EQ.0.AND.exten(k1:k1).NE.' ') le = k1 END DO IF ((lf + ld + le) .LE. len(dmkname)) THEN dmkname = dname(1:ld)//'/'//fname(1:lf) ltot = ld + lf + 1 IF ( le.GT.0) THEN dmkname = dmkname(1:ltot)//exten(1:le) END IF END IF C RETURN END