77 CHARACTER*200 :: keywd
87 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: tmp_e, tmp_xnu, tmp_rho, tmp_alpha
88 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: tmp_isolntype
89 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: tmp_cp, tmp_kappaht
90 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: tmp_isolntypeht
92 ALLOCATE(tmp_e(1:10), tmp_xnu(1:10), tmp_rho(1:10), tmp_alpha(1:10), tmp_isolntype(1:10) )
93 ALLOCATE(tmp_cp(1:10), tmp_kappaht(1:10),tmp_isolntypeht(1:10))
99 glb%DummyTractVal = 0.d0
100 glb%DummyBurnRate = 0.d0
103 glb%ALEenabled = .false.
104 glb%ipstatic = .false.
105 glb%ReStart = .false.
107 glb%IONEWER = .false.
108 glb%DampEnabled = .false.
111 glb%EnforceTractionS = .false.
116 glb%cd_fastest = 0.d0
117 glb%NdBasedEl = .false.
118 glb%UnDefConfig = .false.
119 glb%HeatTransSoln = .false.
120 glb%Temperature0 = 0.
121 glb%ArtificialDamping = .false.
122 glb%EnforceTractionS = .false.
123 glb%EnforceTractionSF = .false.
124 glb%DebondPart = .false.
125 glb%DebondPart_MATOUS = .false.
126 glb%ThermalExpansion = .false.
127 glb%AmplitudeTable = .false.
128 glb%debug_state = .false.
131 glb%OverlayExist = .false.
140 OPEN(glb%io_input,file=
'./Rocfrac/RocfracControl.txt',
status=
'old',iostat=ios)
142 IF(myid.EQ.0)
print*,
'ROCFRAC:: Unable to find RocfracControl.txt - STOPPING'
143 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
150 OPEN(glb%io_sum,file=
'Rocfrac/Modin/InputSummary.res',
status=
'unknown',iostat=ios)
152 OPEN(glb%io_sum,file=
'Rocfrac/InputSummary.res',
status=
'unknown',iostat=ios)
156 IF(myid.EQ.0)
print*,
'ROCFRAC:: Unable to find InputSummary.res under Rocfrac/Modin/ or Rocfrac/ - STOPPING'
157 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
166 1
READ(glb%io_input,
'(A)',iostat=ios) keywd
169 print*,
' *END parameter not found - STOPPING'
170 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
179 IF(keywd(1:1).NE.
'*')
THEN
183 IF(keywd(1:2).EQ.
'**')
THEN
187 lll = len_trim(keywd)
189 IF(myid.EQ.0)
WRITE(glb%io_sum,
'(2X,A,A)') keywd(1:lll)
191 IF(keywd(1:4).EQ.
'*END')
THEN
196 ELSE IF(keywd(1:10).EQ.
'*AMPLITUDE')
THEN
200 ELSE IF(keywd(1:13).EQ.
'*HYPERELASTIC')
THEN
202 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
205 ELSE IF(keywd(1:14).EQ.
'*HEAT TRANSFER')
THEN
209 ELSE IF(keywd(1:8).EQ.
'*ELASTIC')
THEN
211 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
214 ELSE IF(keywd(1:8).EQ.
'*ELEMENT')
THEN
217 ELSE IF(keywd(1:8).EQ.
'*DAMPING')
THEN
218 READ(glb%io_input,*) glb%KappaDamp
219 glb%DampEnabled = .true.
224 ELSE IF(keywd(1:7).EQ.
'*PREFIX')
THEN
227 ELSE IF(keywd(1:4).EQ.
'*ALE')
THEN
230 ELSE IF(keywd(1:5).EQ.
'*NRUN')
THEN
233 ELSE IF(keywd(1:8).EQ.
'*DYNAMIC')
THEN
237 ELSE IF(keywd(1:7).EQ.
'*MATVOL')
THEN
239 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
241 ELSE IF(keywd(1:7).EQ.
'*MATCOH')
THEN
244 ELSE IF(keywd(1:7).EQ.
'*PLOAD1')
THEN
247 ELSE IF(keywd(1:5).EQ.
'*NODE')
THEN
250 ELSE IF(keywd(1:11).EQ.
'*DUMMYTRACT')
THEN
253 ELSE IF(keywd(1:10).EQ.
'*DUMMYBURN')
THEN
254 READ(glb%io_input,*) glb%DummyBurnRate
256 ELSE IF(keywd(1:10).EQ.
'*DUMMYFLUX')
THEN
257 READ(glb%io_input,*) glb%DummyFlux
259 ELSE IF(keywd(1:11).EQ.
'*BOUNDARYMM')
THEN
262 ELSE IF(keywd(1:11).EQ.
'*BOUNDARYHT')
THEN
265 ELSE IF(keywd(1:9).EQ.
'*BOUNDARY')
THEN
268 ELSE IF(keywd(1:9).EQ.
'*IPSTATIC')
THEN
269 glb%ipstatic = .true.
271 ELSE IF(keywd(1:8).EQ.
'*IONEWER')
THEN
274 ELSE IF(keywd(1:10).EQ.
'*DEFCONFIG')
THEN
275 glb%UnDefConfig = .true.
278 ELSE IF(keywd(1:16).EQ.
'*MICROMECHANICAL')
THEN
280 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
283 ELSE IF(keywd(1:11).EQ.
'*ARTDAMPING')
THEN
284 glb%ArtificialDamping = .true.
286 ELSE IF(keywd(1:6).EQ.
'*PROBE')
THEN
289 ELSE IF(keywd(1:18).EQ.
'*INITIAL CONDITION')
THEN
292 ELSE IF(keywd(1: ).EQ.
'*VERBOSITY')
THEN
293 READ(glb%io_input,*) glb%Verb
295 ELSE IF(keywd(1:6).EQ.
'*DEBUG')
THEN
296 glb%debug_state = .true.
299 ELSE IF(keywd(1:1).EQ.
'*')
THEN
300 print*,
'ROCFRAC: ERROR'
301 print*,
'ROCFRAC: CONTROL DECK OPTION ',trim(keywd),
' NOT SUPPORTED'
302 print*,
'ROCFRAC: STOPPING'
303 CALL mpi_barrier(glb%MPI_COMM_ROCFRAC,ierr)
304 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
315 ALLOCATE(glb%E (1:glb%NumMatVol) )
316 ALLOCATE(glb%xnu (1:glb%NumMatVol) )
317 ALLOCATE(glb%rho (1:glb%NumMatVol) )
318 ALLOCATE(glb%alpha (1:glb%NumMatVol) )
319 ALLOCATE(glb%xmu (1:glb%NumMatVol) )
320 ALLOCATE(glb%xlambda (1:glb%NumMatVol) )
321 ALLOCATE(glb%xkappa (1:glb%NumMatVol) )
323 ALLOCATE(glb%iSolnType(1:glb%NumMatVol) )
326 IF(glb%DebondPart_Matous) glb%rho(1) = tmp_rho(1)
328 DO i = 1, glb%NumMatVol
330 glb%xnu(
i) = tmp_xnu(
i)
331 glb%rho(
i) = tmp_rho(
i)
332 glb%alpha(
i) = tmp_alpha(
i)
333 glb%iSolnType(
i) = tmp_isolntype(
i)
335 glb%xmu(
i) = glb%E(
i)/(2.d0*(1.d0+glb%xnu(
i)))
337 glb%xlambda(
i) = 2.d0*glb%xmu(
i)*glb%xnu(
i)/(1.d0-2.d0*glb%xnu(
i))
340 glb%xkappa(
i) = glb%xlambda(
i) + 2.d0/3.d0*glb%xmu(
i)
344 IF(glb%HeatTransSoln)
THEN
345 glb%ThermalDiffusivity = -1.
347 ALLOCATE(glb%iSolnTypeHT(1:glb%NumMatVolHT) )
348 ALLOCATE(glb%KappaHT (1:glb%NumMatVolHT) )
349 ALLOCATE(glb%Cp (1:glb%NumMatVolHT) )
351 DO i = 1, glb%NumMatVolHT
352 glb%KappaHT(
i) = tmp_kappaht(
i)
353 glb%Cp(
i) = tmp_cp(
i)
354 glb%iSolnTypeHT(
i) = tmp_isolntypeht(
i)
358 glb%ThermalDiffusivity =
max( glb%ThermalDiffusivity, glb%KappaHT(
i)/(glb%rho(
i)*glb%Cp(
i)) )
364 DEALLOCATE(tmp_kappaht, tmp_cp, tmp_isolntypeht)
365 DEALLOCATE(tmp_e,tmp_xnu,tmp_rho,tmp_alpha,tmp_isolntype)
368 WRITE(glb%io_sum,50) glb%prefx
370 IF (glb%restart)
WRITE(glb%io_sum,65)
371 WRITE(glb%io_sum,80) glb%NumMatVol,glb%NumMatCoh
372 WRITE(glb%io_sum,85) glb%CourantRatio
374 DO i = 1,glb%NumMatCoh
375 WRITE(glb%io_sum,88) glb%deltan(
i),glb%deltat(
i),glb%SigmaMax(
i),glb%TauMax(
i),glb%Sinit(
i)
381 DO i = 1,glb%NumMatVol
382 WRITE(glb%io_sum,92)
i,glb%E(
i),glb%xnu(
i),glb%rho(
i),glb%alpha(
i)
383 IF(glb%iSolnType(
i).EQ.0)
THEN
384 WRITE(glb%io_sum,*)
' Material Model = Arruda-Boyce '
385 ELSE IF(glb%iSolnType(
i).EQ.-1)
THEN
386 WRITE(glb%io_sum,*)
' Material Model = NeoHookean Incompressible '
387 ELSE IF(glb%iSolnType(
i).EQ.1)
THEN
388 WRITE(glb%io_sum,*)
' Material Model = Elastic, Large Deformation '
389 ELSE IF(glb%iSolnType(
i).EQ.2)
THEN
390 WRITE(glb%io_sum,*)
' Material Model = Elastic, Small Deformation '
392 WRITE(glb%io_sum,*)
' Error, Not a valid Material model, = ', glb%iSolnType(
i)
397 IF(glb%HeatTransSoln)
WRITE(glb%io_sum,*)
'Heat Transfer Solution'
406 50
FORMAT(//,
'DYNAMIC 3D LINEAR ELASTIC FEA',///,
'Job id: ',a20,//)
407 60
FORMAT(
'*** ISOTROPIC ANALYSIS ***',/)
408 65
FORMAT(
' *** RESTART ***',/)
409 80
FORMAT(1
x,
'Number of material types (NUMAT_VOL) =',i12 &
410 /,1
x,
'Number of material types (NUMAT_COH) =',i12)
411 85
FORMAT(/,1
x,
'Steps per characteristic length (STEPS) =',e12.4)
412 86
FORMAT(///,1
x,
'COHESIVE ELEMENT DATA')
413 88
FORMAT(/,1
x,
'Characteristic lengths for the cohesive law:', &
414 /,1
x,
' normal (DELTAN) =',e12.4, &
415 /,1
x,
' tangential (DELTAT) =',e12.4, &
416 /,1
x,
'Maximum normal stress (GLB%SIGMAMAX) =',e12.4, &
417 /,1
x,
'Maximum shearing stress (TAUMAX) =',e12.4, &
418 /,1
x,
'The initial Sthreshold S(init) =',e12.4)
419 90
FORMAT(///,1
x,
'VOLUMETRIC ELEMENT DATA')
420 91
FORMAT(/,4
x,
'MATERIAL SETS')
421 92
FORMAT(/,9
x,
'SET',4
x,i4 &
422 /,12
x,
'E =',10
x,e13.5, &
423 /,12
x,
'Nu =',10
x,e13.5, &
424 /,12
x,
'rho =',10
x,e13.5, &
425 /,12
x,
'alpha =',10
x,e13.5)
453 READ(glb%io_input,
'(A)') glb%prefx
454 glb%prefx_lngth = len_trim(glb%prefx)
483 READ(glb%io_input,*) glb%kappa
484 glb%ALEenabled = .true.
499 READ(glb%io_input,*) glb%CourantRatio
504 IF (glb%CourantRatio > 1.0d0)
THEN
505 glb%CourantRatio = 1.0d0 / glb%CourantRatio
532 CHARACTER(len=200) :: keywd
533 CHARACTER(len=16) :: scalefactor
539 CALL
locchr(keywd,
'SCALE FACTOR ',12,8,k1,k2)
541 scalefactor = keywd(k1:k2)
543 CALL
rchar(scalefactor,glb%CourantRatio)
569 CHARACTER(len=200) :: keywd
571 CHARACTER :: option*16
575 CALL
locchr(keywd,
'INTERFACE ',9,8,k1,k2)
577 option = keywd(k1:k2)
579 IF(option.EQ.
'S') glb%EnforceTractionS = .true.
580 IF(option.EQ.
'SF') glb%EnforceTractionSF = .true.
581 IF(option.EQ.
'ALL')
THEN
582 glb%EnforceTractionS = .true.
583 glb%EnforceTractionSF = .true.
586 READ(glb%io_input,*) glb%DummyTractVal
592 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
623 CHARACTER :: keywd*200
625 CHARACTER*26 :: mattype
626 INTEGER :: nummattype
628 REAL*8,
DIMENSION(1:10) :: tmp_e, tmp_xnu, tmp_rho, tmp_alpha
629 INTEGER,
DIMENSION(1:10) :: tmp_isolntype
631 CALL
conchr(keywd,
'NEOHOOKINC ',10,13,
key)
632 IF(
key.EQ.1) mattype =
'NEOHOOKINC'
634 CALL
conchr(keywd,
'ARRUDA-BOYCE ',12,13,
key)
635 IF(
key.EQ.1) mattype =
'ARRUDA-BOYCE'
637 SELECT CASE (trim(mattype))
639 CASE (
'ARRUDA-BOYCE')
641 READ(glb%io_input,*) nummattype
644 glb%NumMatVol = glb%NumMatVol + 1
649 print*,
'ROCFRAC :: ERROR'
650 print*,
'Number of materials GREATER then 10'
651 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
654 READ(glb%io_input,*) tmp_e(ii), tmp_xnu(ii), tmp_rho(ii), tmp_alpha(ii)
656 glb%cd_fastest =
max( glb%cd_fastest, &
657 sqrt(tmp_e(ii)*(1.d0-tmp_xnu(ii))/tmp_rho(ii)/(1.d0+tmp_xnu(ii))/(1.d0-2.d0*tmp_xnu(ii) )) )
658 tmp_isolntype(ii) = 0
664 READ(glb%io_input,*) nummattype
667 glb%NumMatVol = glb%NumMatVol + 1
672 print*,
'ROCFRAC :: ERROR'
673 print*,
'Number of materials GREATER then 10'
674 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
677 READ(glb%io_input,*) tmp_e(ii), tmp_xnu(ii), tmp_rho(ii), tmp_alpha(ii)
679 glb%cd_fastest =
max( glb%cd_fastest, &
680 sqrt(tmp_e(ii)*(1.d0-tmp_xnu(ii))/tmp_rho(ii)/(1.d0+tmp_xnu(ii))/(1.d0-2.d0*tmp_xnu(ii) )) )
681 tmp_isolntype(ii) = -1
687 print*,
'ROCFRAC :: ERROR'
688 print*,
'ROCFRAC :: *HYPERELASTIC KEYWORD ',trim(mattype),
' NOT FOUND'
689 print*,
'ROCFRAC :: STOPPING'
690 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
699 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
730 CHARACTER :: keywd*200
732 CHARACTER*26 :: mattype
733 INTEGER :: nummattype
735 REAL*8,
DIMENSION(1:10) :: tmp_e, tmp_xnu, tmp_rho, tmp_alpha
736 INTEGER,
DIMENSION(1:10) :: tmp_isolntype
739 CHARACTER :: nlgeom*16
740 INTEGER :: nlgeomtype
742 CALL
locchr(keywd,
'NLGEOM ',6,8,k1,k2)
744 nlgeom = keywd(k1:k2)
747 IF(nlgeom.EQ.
'NO')
THEN
752 READ(glb%io_input,*) nummattype
756 glb%NumMatVol = glb%NumMatVol + 1
761 print*,
'ROCFRAC :: ERROR'
762 print*,
'Number of ELASTIC materials GREATER then 10'
763 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
766 READ(glb%io_input,*) tmp_e(ii), tmp_xnu(ii), tmp_rho(ii), tmp_alpha(ii)
768 IF(tmp_alpha(ii).NE.0.d0) glb%ThermalExpansion = .true.
770 glb%cd_fastest =
max( glb%cd_fastest, &
771 sqrt(tmp_e(ii)*(1.d0-tmp_xnu(ii))/tmp_rho(ii)/(1.d0+tmp_xnu(ii))/(1.d0-2.d0*tmp_xnu(ii) )) )
772 tmp_isolntype(ii) = nlgeomtype
781 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
790 integer :: nummattype
791 REAL*8,
DIMENSION(1:10) :: tmp_e, tmp_xnu, tmp_rho, tmp_alpha
792 INTEGER,
DIMENSION(1:10) :: tmp_isolntype
794 READ(glb%io_input,*) nummattype
797 glb%NumMatVol = glb%NumMatVol + 1
802 print*,
'ROCFRAC :: ERROR'
803 print*,
'Number of materials GREATER then 10'
804 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
808 READ(glb%io_input,*) tmp_e(ii), tmp_xnu(ii), tmp_rho(ii), tmp_alpha(ii),tmp_isolntype(ii)
811 glb%cd_fastest =
max( glb%cd_fastest, &
812 sqrt(tmp_e(ii)*(1.d0-tmp_xnu(ii))/tmp_rho(ii)/(1.d0+tmp_xnu(ii))/(1.d0-2.d0*tmp_xnu(ii) )) )
827 READ(glb%io_input,*) glb%NumMatCoh
829 ALLOCATE(glb%deltan(1:glb%NumMatCoh))
830 ALLOCATE(glb%deltat(1:glb%NumMatCoh))
831 ALLOCATE(glb%SigmaMax(1:glb%NumMatCoh))
832 ALLOCATE(glb%TauMax(1:glb%NumMatCoh))
833 ALLOCATE(glb%Sinit (1:glb%NumMatCoh))
835 DO i = 1, glb%NumMatCoh
836 READ(glb%io_input,*) glb%deltan(
i),glb%deltat(
i),glb%SigmaMax(
i),glb%TauMax(
i), glb%Sinit(
i)
850 INTEGER :: pload1_input
852 READ(glb%io_input,*) pload1_input
868 READ(glb%io_input,*) glb%NumNodeIO, glb%NumNodeIOpid
870 IF(glb%NumNodeIOpid.EQ.myid)
THEN
872 ALLOCATE(glb%NodeIO(1:glb%NumNodeIO))
874 DO i = 1, glb%NumNodeIO
875 READ(glb%io_input,*) glb%NodeIO
912 INTEGER :: numbcflags
914 READ(glb%io_input,*) numbcflags
916 ALLOCATE(glb%bcCond(1:numbcflags))
919 READ(glb%io_input,*) iaux,glb%bcCond(
i)%BCtypeX,glb%bcCond(
i)%BCtypeY,glb%bcCond(
i)%BCtypeZ, &
920 glb%bcCond(
i)%BCvalueX,glb%bcCond(
i)%BCvalueY,glb%bcCond(
i)%BCvalueZ
950 INTEGER :: numbcflagsht
952 READ(glb%io_input,*) numbcflagsht
955 ALLOCATE(glb%bcCondHT(1:numbcflagsht))
957 DO i = 1, numbcflagsht
958 READ(glb%io_input,*) iaux,glb%bcCondHT(
i)%BCtypeX,glb%bcCondHT(
i)%BCtypeY,glb%bcCondHT(
i)%BCtypeZ, &
959 glb%bcCondHT(
i)%BCvalueX,glb%bcCondHT(
i)%BCvalueY,glb%bcCondHT(
i)%BCvalueZ
988 INTEGER :: numbcflagsmm
990 READ(glb%io_input,*) numbcflagsmm
992 ALLOCATE(glb%bcCondmm(1:numbcflagsmm))
994 DO i = 1, numbcflagsmm
995 READ(glb%io_input,*) iaux,glb%bcCondmm(
i)%BCtypeX,glb%bcCondmm(
i)%BCtypeY,glb%bcCondmm(
i)%BCtypeZ, &
996 glb%bcCondmm(
i)%BCvalueX,glb%bcCondmm(
i)%BCvalueY,glb%bcCondmm(
i)%BCvalueZ
1010 CHARACTER :: keywd*200
1015 CHARACTER :: amptype*16
1017 REAL*8 :: slp, intcpt, rise,
run
1018 REAL*8,
POINTER,
DIMENSION(:,:) :: tableval
1019 REAL*8 :: x1, y1, x2, y2
1021 CALL
locchr(keywd,
'DEFINITION ',10,10,k1,k2)
1023 amptype = keywd(k1:k2)
1025 IF(amptype.EQ.
'TABULAR')
THEN
1027 glb%AmplitudeTable = .true.
1029 READ(glb%io_input,*) glb%NumEntries
1035 ALLOCATE(tableval(1:2,glb%NumEntries))
1036 DO i = 1, glb%NumEntries
1037 READ(glb%io_input,*) tableval(1:2,
i)
1040 glb%NumEntries = glb%NumEntries - 1
1042 ALLOCATE( glb%AmpTable(1:3,glb%NumEntries))
1044 DO i = 1, glb%NumEntries
1048 x2 = tableval(1,
i+1)
1049 y2 = tableval(2,
i+1)
1054 slp = (y2-y1)/(x2-x1)
1056 IF(abs(slp*x1).LT.1.0e-6)
THEN
1059 intcpt = y1/(slp*x1)
1062 glb%AmpTable(1,
i) = tableval(1,
i)
1063 glb%AmpTable(2,
i) = slp
1064 glb%AmpTable(3,
i) = intcpt
1069 DEALLOCATE(tableval)
1097 CHARACTER(len=200) :: keywd
1100 CHARACTER(len=16) :: eltype
1102 CALL
locchr(keywd,
'TYPE ',4,8,k1,k2)
1104 eltype = keywd(k1:k2)
1106 SELECT CASE (trim(eltype))
1112 glb%NdBasedEl = .true.
1115 glb%NdBasedEl = .true.
1128 print*,
'*ELEMENT TYPE NOT FOUND'
1143 CHARACTER :: keywd*200
1145 CHARACTER*26 :: mattype
1146 INTEGER :: nummattypeht
1147 INTEGER ::
i,ii,ierr,
j
1148 REAL*8,
DIMENSION(1:10) :: tmp_kappaht, tmp_cp
1149 INTEGER,
DIMENSION(1:10) :: tmp_isolntypeht
1151 READ(glb%io_input,*) nummattypeht
1153 DO i = 1, nummattypeht
1154 glb%NumMatVolHT = glb%NumMatVolHT + 1
1156 ii = glb%NumMatVolHT
1159 print*,
'ROCFRAC :: ERROR'
1160 print*,
'Number of materials GREATER then 10'
1161 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
1164 READ(glb%io_input,*)
j, tmp_kappaht(ii),tmp_cp(ii)
1166 tmp_isolntypeht(ii) =
j
1180 glb%HeatTransSoln = .true.
1211 READ(glb%io_input,*) glb%NumProbesNd
1213 ALLOCATE(glb%ProbeCoorNd(1:3,1:glb%NumProbesNd))
1214 ALLOCATE(glb%ProbeNd(1:glb%NumProbesNd))
1216 DO i = 1, glb%NumProbesNd
1217 READ(glb%io_input,*) glb%ProbeCoorNd(1:3,
i)
1225 tmp_e, tmp_xnu, tmp_rho, tmp_alpha, tmp_isolntype)
1253 CHARACTER :: keywd*200
1255 INTEGER :: k1, k2,
i
1256 CHARACTER :: modeltype*16
1257 REAL*8,
DIMENSION(1:10) :: tmp_e, tmp_xnu, tmp_rho, tmp_alpha
1258 INTEGER,
DIMENSION(1:10) :: tmp_isolntype
1260 INTEGER :: nummatvol_loc
1262 integer :: nlgeomtype
1266 CALL
locchr(keywd,
'MODEL ',5,8,k1,k2)
1268 IF(k1.GT.0.and.k2.GT.k1)
THEN
1270 modeltype = keywd(k1:k2)
1272 IF(modeltype.EQ.
'HUANG')
THEN
1278 ALLOCATE(glb%MATRIX(1:glb%NMATRIX))
1280 READ(glb%io_input,*) glb%MATRIX(1:glb%NMATRIX), tmp_rho(1)
1282 READ(glb%io_input,*) glb%NPARTICLETYPE
1286 allocate(glb%PARTICLE(1:glb%NPARTICLE,1:glb%NPARTICLETYPE))
1287 DO i = 1, glb%NPARTICLETYPE
1288 READ(glb%io_input,*) glb%PARTICLE(1:4,
i)
1295 IF (glb%particle(1,1)-glb%particle(1,2).NE.0.d0 .OR. &
1296 glb%particle(2,1)-glb%particle(2,2).NE.0.d0)
THEN
1297 print*,
'ROCFRAC: Error: the particles do not have the same moduli.'
1301 IF (abs( glb%particle(3,1)+glb%particle(3,2) +glb%matrix(3)-1.d0).GT.0.001)
THEN
1302 print*,
'ROCFRAC: Error: the volume fractions of particles and matrix'
1303 print*,
'do not add up to 1'
1309 allocate(glb%INTERFAC(1:glb%NINTERFAC))
1310 READ(glb%io_input,*) glb%INTERFAC(1:3)
1313 glb%DebondPart = .true.
1317 glb%PARTICLE(1,1), glb%PARTICLE(2,1), glb%MATRIX(3), glb%cd_fastest )
1330 ELSE IF(modeltype.EQ.
'MATOUS')
THEN
1332 glb%DebondPart_Matous = .true.
1333 glb%NumMatVol = glb%NumMatVol + 1
1335 READ(glb%io_input,*) glb%NumMatVol_Part
1337 ALLOCATE(glb%E1(1:glb%NumMatVol_Part) )
1338 ALLOCATE(glb%E2(1:glb%NumMatVol_Part) )
1339 ALLOCATE(glb%E3(1:glb%NumMatVol_Part) )
1340 ALLOCATE(glb%nu12(1:glb%NumMatVol_Part) )
1341 ALLOCATE(glb%nu13(1:glb%NumMatVol_Part) )
1342 ALLOCATE(glb%nu23(1:glb%NumMatVol_Part) )
1343 ALLOCATE(glb%G12(1:glb%NumMatVol_Part) )
1344 ALLOCATE(glb%G13(1:glb%NumMatVol_Part) )
1345 ALLOCATE(glb%G23(1:glb%NumMatVol_Part) )
1347 DO i = 1, glb%NumMatVol_Part
1348 READ(glb%io_input,*) glb%E1(
i), glb%E2(
i), glb%E3(
i), &
1349 glb%nu12(
i), glb%nu13(
i), glb%nu23(
i), &
1350 glb%G12(
i), glb%G13(
i), glb%G23(
i), tmp_rho(
i)
1354 READ(glb%io_input,*) glb%alpha1, glb%alpha2, glb%c2, glb%p1, glb%p2, glb%Yin, glb%a_eta, glb%a_zeta
1356 glb%cm = 1.d0 - glb%c2
1362 print*,
'ERROR in *MICROMECHANICAL keywd'
1363 print*,
'MODEL type not found'
1368 tmp_isolntype(1) = nlgeomtype
1394 CHARACTER(len=200) :: keywd
1397 CALL
locchr(keywd,
'TYPE ',4,16,k1,k2)
1400 IF(keywd(k1:k2).EQ.
'TEMPERATURE')
THEN
1401 READ(glb%io_input,*) glb%Temperature0
subroutine matmodel_elastic(glb, keywd, tmp_E, tmp_xnu, tmp_rho, tmp_alpha, tmp_iSolnType)
subroutine element_sub(glb, keywd)
subroutine dummytract_sub(glb, keywd)
subroutine micromechanical_sub(glb, keywd, tmp_E, tmp_xnu, tmp_rho, tmp_alpha, tmp_iSolnType)
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
subroutine conchr(text, varna, lvari, kpos0, key)
int status() const
Obtain the status of the attribute.
subroutine matmodel_hyperelastic(glb, keywd, tmp_E, tmp_xnu, tmp_rho, tmp_alpha, tmp_iSolnType)
subroutine feminp(glb, myid)
subroutine matvol_sub(glb, tmp_E, tmp_xnu, tmp_rho, tmp_alpha, tmp_iSolnType)
subroutine amplitude_sub(glb, keywd)
subroutine pload1_sub(glb)
virtual void run(double t, double dt, double alpha)
subroutine matcoh_sub(glb)
subroutine initialcondition_sub(glb, keywd)
subroutine boundarymm_sub(glb)
subroutine probe_sub(glb)
subroutine rchar(char, key)
subroutine locchr(text, varna, lvari, kpos0, kpos1, kpos2)
subroutine boundary_sub(glb)
subroutine heat_transfer_sub(glb, keywd, tmp_KappaHT, tmp_Cp, tmp_iSolnTypeHT)
subroutine homogenizedmat(Density, Em, PRm, Ep, PRp, cm, cd_fastest)
subroutine prefix_sub(glb)
subroutine nodeio_sub(myid)
subroutine dynamic_sub(glb, keywd)
subroutine boundaryht_sub(glb)