111 SUBROUTINE rocfracinitialize( glb, InitialTime, MPI_COMM_ROCSTAR, MAN_init, surfIn, volIn, obtain_attr)
115 include
'roccomf90.h'
118 REAL*8,
INTENT(IN) :: initialtime
119 INTEGER,
INTENT(IN) :: mpi_comm_rocstar
120 INTEGER,
INTENT(IN) :: man_init, obtain_attr
121 CHARACTER(*),
INTENT(IN) :: surfin, volin
123 INTEGER ::
i,
j,j1,jj,
k,k1,k2,idum,iaux,iaux1
127 INTEGER :: myid, numprocs, ierr
132 INTEGER,
DIMENSION(3) :: ndsurf
133 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: buf
141 CHARACTER(len=2) :: chr2
143 CHARACTER*120 :: frachdffname, meshfile
145 character(LEN=1),
POINTER,
DIMENSION(:) :: names
146 character(LEN=3) :: ichr03
147 character(LEN=4) :: ichr04
149 integer :: numeltypes2d
151 character(LEN=4) :: chreltype
152 integer :: endpt, startpt, chrlngth
155 INTEGER :: numparcomm
156 INTEGER,
pointer,
dimension(:) :: parcomm
158 INTEGER,
pointer :: arraytmp
159 INTEGER,
pointer,
dimension(:) :: arraytmp1
161 integer :: icnt1, icnt2, icnt3, icnt4
165 logical :: mesherror, mesherrorall, restartall
167 glb%MPI_COMM_ROCFRAC = mpi_comm_rocstar
168 rocstar_communicator = mpi_comm_rocstar
170 CALL mpi_comm_rank(glb%MPI_COMM_ROCFRAC,myid,ierr)
171 CALL mpi_comm_size(glb%MPI_COMM_ROCFRAC,numprocs,ierr)
172 WRITE(glb%MyIdChr,
'(i4.4)') myid
187 glb%InterfaceSFNumNodes = 0
188 glb%InterfaceSFnbNumNodes = 0
191 CALL mpi_barrier(glb%MPI_COMM_ROCFRAC,ierr)
192 IF(myid.eq.0 .AND. glb%debug_state)
THEN
193 WRITE(6,
'(A)')
'Rocfrac: ....Done Reading input deck.'
199 IF(glb%iElType.EQ.4)
THEN
203 ELSE IF(glb%iElType.EQ.10)
THEN
207 ELSE IF(glb%iElType.EQ.8)
THEN
215 IF(myid.EQ.0 .AND. glb%debug_state)
THEN
216 WRITE(6,
'(A)')
'Rocfrac: Reading Mesh'
223 CALL com_new_window( volwin)
225 CALL com_get_size( volin//
".nc", myid+1, glb%NumNP)
226 CALL com_set_size( volwin//
'.nc', myid+1, glb%NumNP )
229 ALLOCATE(glb%MeshCoor(1:3,1:glb%NumNP))
230 ALLOCATE(glb%xmass(1:glb%NumNP))
231 IF(glb%HeatTransSoln)
ALLOCATE(glb%CapctInv(1:glb%NumNP))
245 CALL com_get_size( volin//
".bcnode", myid+1,glb%NumNdsBCcrypt)
247 ALLOCATE(glb%BCFlagCrypt(1:2,1:glb%NumNdsBCcrypt))
249 ALLOCATE(glb%BCValueGlb(1:glb%NumNdsBCcrypt*6))
309 CALL com_get_connectivities(volin,myid+1,numeltypes2d,names)
312 DO i = 1, numeltypes2d
316 DO WHILE (endpt .LE. ubound(names,1))
317 IF (names(endpt) .NE.
' ')
THEN
318 chrlngth = chrlngth + 1
319 chreltype(chrlngth:chrlngth) = names(endpt)
329 mesherrorall = .false.
331 IF(chreltype(1:chrlngth).EQ.
':T10')
THEN
332 CALL com_get_size( volin//
".:T10", myid+1, glb%NumElVol)
333 CALL com_set_size( volwin//
'.:T10', myid+1, glb%NumElVol)
334 ELSE IF(chreltype(1:chrlngth).EQ.
':T4')
THEN
335 CALL com_get_size( volin//
".:T4", myid+1, glb%NumElVol)
336 CALL com_set_size( volwin//
'.:T4', myid+1, glb%NumElVol)
337 ELSE IF(chreltype(1:chrlngth).EQ.
':H8')
THEN
338 CALL com_get_size( volin//
".:H8", myid+1, glb%NumElVol)
339 CALL com_set_size( volwin//
'.:H8', myid+1, glb%NumElVol)
344 CALL mpi_reduce(mesherror, mesherrorall, 1, mpi_logical, &
345 mpi_lor,0,glb%MPI_COMM_ROCFRAC,ierr)
347 IF( myid.eq.0 .and. mesherrorall .eqv. .true.)
THEN
348 WRITE(0,
'(A,A)')
'Rocfrac: Error: Volume mesh type', &
349 ' element not supported'
350 WRITE(0,
'(A,A)')
'Rocfrac: Read in Element Type :: ',&
351 chreltype(1:chrlngth)
352 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
357 CALL com_free_buffer(names)
363 CALL com_get_array_const(volin//
".NumElPartBndry",myid+1,arraytmp)
365 glb%NumElPartBndry = arraytmp
371 CALL com_get_array_const(volin//
".NumElVolMat",myid+1,arraytmp1)
373 ALLOCATE(glb%NumElVolMat(1:glb%NumMatVol))
375 DO i = 1, glb%NumMatVol
376 glb%NumElVolMat(
i) = arraytmp1(
i)
378 CALL com_get_array_const(volin//
".NumElPartBndryMat",myid+1,arraytmp1)
380 ALLOCATE(glb%NumElPartBndryMat(1:glb%NumMatVol))
381 DO i = 1, glb%NumMatVol
382 glb%NumElPartBndryMat(
i) = arraytmp1(
i)
385 IF(.NOT.(glb%DebondPart).AND..NOT.(glb%DebondPart_Matous))
THEN
386 ALLOCATE(glb%ci(1:9,1:glb%NumMatVol))
388 ALLOCATE(glb%cj(1:9,1:glb%NumMatVol))
393 DO kk = 1, glb%NumMatVol
395 ALLOCATE(glb%MatIdVol(1:glb%NumElVol))
396 ALLOCATE(glb%ElConnVol(1:glb%iElType,1:glb%NumElVol))
401 IF(glb%NdBasedEl)
THEN
404 ALLOCATE(glb%NumElNeigh(1:glb%NumNP))
405 ALLOCATE(glb%ElConnNd(1:glb%NumNP,1:40))
406 ALLOCATE(glb%AlphaR(1:4,1:glb%NumElVol))
407 ALLOCATE(glb%VolUndfmd(1:glb%NumNP))
409 glb%NumElNeigh(:) = 0
410 glb%ElConnNd(:,:) = 0
413 DO jj = 1,glb%NumElVolMat(kk)
434 IF(glb%NdBasedEl)
THEN
436 CALL
volratio(glb%ElConnVol(1,
i),glb%ElConnVol(2,
i),glb%ElConnVol(3,
i),glb%ElConnVol(4,
i),glb%AlphaR(1:4,
i),&
437 glb%MeshCoor,glb%NumNp,glb%NdMassLump)
440 glb%NumElNeigh(glb%ElConnVol(
j,
i)) = glb%NumElNeigh(glb%ElConnVol(
j,
i)) + 1
441 glb%ElConnNd(glb%ElConnVol(
j,
i),glb%NumElNeigh(glb%ElConnVol(
j,
i))) =
i
450 IF(numprocs.NE.0)
THEN
473 glb%TotNumNeighProcs = 1
478 CALL com_get_size( volin//
".pconn", myid+1, numparcomm)
479 CALL com_set_size( volwin//
'.pconn', myid+1, numparcomm)
480 CALL com_resize_array(volwin//
'.pconn', myid+1, parcomm, 1)
563 CALL mpi_barrier(glb%MPI_COMM_ROCFRAC,ierr)
564 IF(myid.EQ.0 .AND. glb%debug_state)
THEN
565 WRITE(6,
'(A)')
'Rocfrac: Finished Reading Solids Mesh'
568 IF((glb%DebondPart.eqv..false.).AND.(glb%DebondPart_Matous.eqv..false.))
THEN
570 CALL
vol_elem_mat(glb%E,glb%xnu,glb%ci,glb%cj,glb%NumMatVol,glb%iElIntgratn)
572 ELSE IF(glb%DebondPart_Matous.eqv..true.)
THEN
574 ALLOCATE( glb%StrainOld(1:4,1:glb%NumElVol*6) )
575 ALLOCATE( glb%SoftParam(1:4,1:glb%NumElVol) )
576 ALLOCATE( glb%cd(1:4,1:glb%NumElVol) )
580 ELSE IF(glb%DebondPart.eqv..true.)
THEN
582 ALLOCATE(glb%STATEV_Part1(1:glb%NumElVol))
583 ALLOCATE(glb%STATEV_Part2(1:glb%NumElVol))
585 glb%STATEV_Part1(:) = 1
586 glb%STATEV_Part2(:) = 1
588 ALLOCATE(glb%StrainTrace(1:glb%NumElVol))
592 IF(glb%iElType.EQ.8)
THEN
594 allocate(glb%mixed_map(1:8,1:9,1:12))
595 allocate(glb%enhanced_map(1:8,1:9,1:9))
596 allocate(glb%Aenh(1:9,1:glb%NumElVol))
599 glb%enhanced_map = 0.d0
603 allocate(glb%dmat(1:glb%NumMatVol,1:9,1:9))
605 DO i = 1, glb%NumMatVol
612 ALLOCATE(glb%Disp(1:3*glb%NumNP))
615 ALLOCATE(glb%Accel(1:3*glb%NumNP))
618 ALLOCATE(glb%DispOld(1:3*glb%NumNP))
619 ALLOCATE(glb%S11(1:glb%iStrGss,1:glb%NumElVol),glb%S22(1:glb%iStrGss,1:glb%NumElVol))
620 ALLOCATE(glb%S33(1:glb%iStrGss,1:glb%NumElVol) )
621 ALLOCATE(glb%S12(1:glb%iStrGss,1:glb%NumElVol),glb%S23(1:glb%iStrGss,1:glb%NumElVol))
622 ALLOCATE(glb%S13(1:glb%iStrGss,1:glb%NumElVol) )
623 ALLOCATE(glb%SVonMises(1:glb%NumElVol))
625 IF(glb%HeatTransSoln .eqv. .true.)
THEN
626 ALLOCATE(glb%Temperature(1:glb%NumNP))
627 glb%Temperature(1:glb%NumNP) = glb%Temperature0
630 IF(glb%ArtificialDamping .eqv. .true.)
THEN
631 ALLOCATE(glb%DetF_Old(1:glb%iStrGss,1:glb%NumElVol))
632 glb%DetF_Old(:,:) = 1.d0
636 ALLOCATE(glb%DispBar(1:3*glb%NumNP),glb%VeloBar(1:3*glb%NumNP),glb%AccelBar(1:3*glb%NumNP))
637 glb%DispBar(:) = 0.d0
638 glb%VeloBar(:) = 0.d0
639 glb%AccelBar(:) = 0.d0
642 ALLOCATE(glb%VeloHalf(1:3*glb%NumNP),glb%VeloBarOld(1:3*glb%NumNP))
643 glb%VeloHalf(:) = 0.d0
644 glb%VeloBarOld(:) = 0.d0
646 ALLOCATE(glb%DispTotal(1:3*glb%NumNP))
648 glb%S11(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
649 glb%S22(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
650 glb%S33(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
651 glb%S12(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
652 glb%S23(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
653 glb%S13(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
654 glb%SVonMises(1:glb%NumElVol) = 0.d0
665 CALL com_new_attribute( volwin//
'.disp',
'n', com_double, 3,
'm')
666 CALL com_new_attribute( volwin//
'.disp_burn',
'n',com_double, 3,
'm')
667 CALL com_new_attribute( volwin//
'.velo',
'n', com_double, 3,
'm/s')
668 CALL com_new_attribute( volwin//
'.stress',
'e', com_double, 1,
'Pa')
669 CALL com_new_attribute( volwin//
'.accel',
'n', com_double, 3,
'm/s^2')
670 CALL com_new_attribute( volwin//
'.vbar',
'n', com_double, 3,
'm/s')
671 CALL com_new_attribute( volwin//
'.S11',
'e', com_double, glb%iStrGss,
'Pa')
672 CALL com_new_attribute( volwin//
'.S22',
'e', com_double, glb%iStrGss,
'Pa')
673 CALL com_new_attribute( volwin//
'.S33',
'e', com_double, glb%iStrGss,
'Pa')
674 CALL com_new_attribute( volwin//
'.S12',
'e', com_double, glb%iStrGss,
'Pa')
675 CALL com_new_attribute( volwin//
'.S23',
'e', com_double, glb%iStrGss,
'Pa')
676 CALL com_new_attribute( volwin//
'.S13',
'e', com_double, glb%iStrGss,
'Pa')
678 CALL com_new_attribute( volwin//
'.NumElPartBndry',
'p', com_integer, 1,
'')
679 CALL com_new_attribute( volwin//
'.NumElVolMat',
'p', com_integer, 1,
'')
680 CALL com_new_attribute( volwin//
'.NumElPartBndryMat',
'p', com_integer, 1,
'')
682 IF(glb%DebondPart .eqv. .true.)
THEN
683 CALL com_new_attribute( volwin//
'.StrainTrace',
'e', com_double, 1,
' ')
684 CALL com_new_attribute( volwin//
'.DebondLg',
'e', com_double, 1,
' ')
685 CALL com_new_attribute( volwin//
'.DebondSm',
'e', com_double, 1,
' ')
688 IF(glb%DebondPart_Matous .eqv. .true.)
THEN
689 CALL com_new_attribute( volwin//
'.StrainOld',
'e', com_double, 4,
' ')
690 CALL com_new_attribute( volwin//
'.SoftParam',
'e', com_double, 4,
' ')
693 IF(glb%HeatTransSoln .eqv. .true.) CALL com_new_attribute( volwin//
'.Temp',
'n', com_double, 1,
'K')
695 IF ( glb%NumNP > 0)
THEN
702 CALL com_set_array(volwin//
'.nc', myid+1, glb%MeshCoor,3)
706 IF(glb%iElType.EQ.4)
THEN
710 CALL com_set_array( volwin//
'.:T4', myid+1, glb%ElConnVol,4)
712 ELSE IF(glb%iElType.EQ.10)
THEN
716 CALL com_set_array( volwin//
'.:T10', myid+1, glb%ElConnVol,10)
718 ELSE IF(glb%iElType.EQ.8)
THEN
721 CALL com_set_array( volwin//
'.:H8', myid+1, glb%ElConnVol,8)
725 CALL com_set_array( volwin//
'.disp', myid+1, glb%Disp,3)
726 CALL com_set_array( volwin//
'.disp_burn', myid+1, glb%DispBar,3)
727 CALL com_set_array( volwin//
'.velo', myid+1, glb%VeloHalf,3)
728 CALL com_set_array( volwin//
'.stress', myid+1, glb%SVonMises,1)
729 CALL com_set_array( volwin//
'.accel', myid+1, glb%Accel,3)
730 CALL com_set_array( volwin//
'.vbar', myid+1, glb%VeloBar,3)
731 CALL com_set_array( volwin//
'.S11', myid+1, glb%S11)
732 CALL com_set_array( volwin//
'.S22', myid+1, glb%S22)
733 CALL com_set_array( volwin//
'.S33', myid+1, glb%S33)
734 CALL com_set_array( volwin//
'.S12', myid+1, glb%S12)
735 CALL com_set_array( volwin//
'.S23', myid+1, glb%S23)
736 CALL com_set_array( volwin//
'.S13', myid+1, glb%S13)
738 CALL com_set_size( volwin//
'.NumElPartBndry', myid+1, 1)
739 CALL com_set_array( volwin//
'.NumElPartBndry', myid+1,glb%NumElPartBndry,1 )
741 CALL com_set_size( volwin//
'.NumElVolMat', myid+1, glb%NumMatVol)
742 CALL com_set_array( volwin//
'.NumElVolMat', myid+1, glb%NumElVolMat, 1)
744 CALL com_set_size( volwin//
'.NumElPartBndryMat', myid+1, glb%NumMatVol)
745 CALL com_set_array( volwin//
'.NumElPartBndryMat',myid+1, glb%NumElPartBndryMat, 1 )
747 IF(glb%HeatTransSoln.eqv..true.) CALL com_set_array( volwin//
'.Temp', myid+1, glb%Temperature,1)
748 IF(glb%DebondPart.eqv..true.)
THEN
749 CALL com_set_array( volwin//
'.DebondLg', myid+1, glb%STATEV_Part1,1)
750 CALL com_set_array( volwin//
'.DebondSm', myid+1, glb%STATEV_Part2,1)
751 CALL com_set_array( volwin//
'.StrainTrace', myid+1, glb%StrainTrace,1)
753 IF(glb%DebondPart_Matous.eqv..true.)
THEN
754 CALL com_set_array( volwin//
'.StrainOld', myid+1, glb%StrainOld,4)
755 CALL com_set_array( volwin//
'.SoftParam', myid+1, glb%SoftParam,4)
761 IF(initialtime.NE.0.d0)
THEN
765 CALL mpi_reduce(glb%ReStart, restartall, 1, mpi_logical, &
766 mpi_lor,0,glb%MPI_COMM_ROCFRAC,ierr)
768 IF(glb%Verb.gt.0 .and. myid.eq.0 .and. &
769 restartall .eqv. .true.)
THEN
770 WRITE(6,
'(A)')
'Rocfrac: Restarting, Solids'
773 CALL com_new_attribute(volwin//
'.BCValue',
'p',com_double, 1,
'')
774 CALL com_set_size( volwin//
'.BCValue', myid+1, glb%NumNdsBCcrypt*6)
775 CALL com_set_array( volwin//
'.BCValue', myid+1, glb%BCValueGlb, 1)
779 CALL com_new_attribute(volwin//
'.bcnode',
'p',com_integer, 2,
'')
780 CALL com_set_size( volwin//
'.bcnode', myid+1, glb%NumNdsBCcrypt)
781 CALL com_set_array( volwin//
'.bcnode', myid+1, glb%BCFlagCrypt, 2)
783 CALL com_new_attribute(volwin//
'.MatType',
'e',com_integer, 1,
'')
784 CALL com_set_array( volwin//
'.MatType', myid+1, glb%MatIdVol, 1)
790 CALL com_window_init_done( volwin)
792 CALL com_call_function( obtain_attr, 2, &
793 com_get_attribute_handle_const( volin//
".all"), &
794 com_get_attribute_handle( volwin//
".all"))
800 glb%TotNumNeighProcs = 0
813 IF(numprocs.GT.1) glb%TotNumNeighProcs = parcomm(1)
817 ALLOCATE(glb%NeighProcList(1:glb%TotNumNeighProcs))
821 ALLOCATE(glb%NumNdComm(1:glb%TotNumNeighProcs))
822 ALLOCATE(glb%NdCommList(1:glb%TotNumNeighProcs))
829 DO i = 1, glb%TotNumNeighProcs
831 glb%NeighProcList(
i) = parcomm(iptr) -1
833 glb%NumNdComm(
i) = parcomm(iptr)
834 glb%TotNumNdComm = glb%TotNumNdComm + glb%NumNdComm(
i)
836 ALLOCATE(glb%NdCommList(
i)%NdId(1:glb%NumNdComm(
i)))
838 DO j=1,glb%NumNdComm(
i)
840 glb%NdCommList(
i)%NdId(
j) = parcomm(iptr)
846 glb%TotNumNdComm = glb%TotNumNdComm*3
848 IF(glb%TotNumNeighProcs.NE.0)
THEN
849 ALLOCATE(glb%RecvDataFrm(1:numprocs) )
850 ALLOCATE(glb%ReqRcv (1:glb%TotNumNeighProcs) )
851 ALLOCATE(glb%ReqSnd (1:glb%TotNumNeighProcs) )
853 ALLOCATE(glb%StatSnd (1:mpi_status_size,1:glb%TotNumNeighProcs) )
854 ALLOCATE(glb%StatRcv (1:mpi_status_size,1:glb%TotNumNeighProcs) )
863 DO j = 1, glb%TotNumNeighProcs
864 k = glb%NeighProcList(
j) + 1
865 ALLOCATE(glb%RecvDataFrm(
k)%rcvbuf(1:glb%NumNdComm(
j)*3))
870 DO i = 1, glb%NumNdsBCcrypt
871 ndbcflag = mod(glb%BCFlagCrypt(2,
i),100)
873 IF(ndbcflag.GT.0) glb%NumNdsBC = glb%NumNdsBC + 1
875 ndbcflag = glb%BCFlagCrypt(2,
i)/10000
877 IF(ndbcflag.GT.0) glb%NumNdsBCmm = glb%NumNdsBCmm + 1
879 ndbcflag = mod(glb%BCFlagCrypt(2,
i),10000)/100
881 IF(ndbcflag.GT.0) glb%NumNdsBCHT = glb%NumNdsBCHT + 1
884 IF(glb%NumNdsBC.NE.0)
THEN
885 ALLOCATE(glb%BCFlag(1:4,1:glb%NumNdsBC),glb%BCvalue(1:3,1:glb%NumNdsBC))
886 ALLOCATE(glb%AccelBndry(1:3*glb%NumNdsBC),glb%VeloBndry(1:3*glb%NumNdsBC))
888 IF(glb%NumNdsBCmm.NE.0)
ALLOCATE(glb%BCFlagmm(1:4,1:glb%NumNdsBCmm),glb%BCvaluemm(1:3,1:glb%NumNdsBCmm))
889 IF(glb%NumNdsBCHT.NE.0)
ALLOCATE(glb%BCFlagHT(1:2,1:glb%NumNdsBCHT),glb%BCvalueHT(1,1:glb%NumNdsBCHT))
911 DO i = 1, glb%NumNdsBCcrypt
914 ndbcflag = mod(glb%BCFlagCrypt(2,
i),100)
919 IF(ndbcflag.GT.0)
THEN
921 glb%BCFlag(1,icnt1) = glb%BCFlagCrypt(1,
i)
923 glb%BCFlag(2,icnt1) = glb%bcCond(ndbcflag)%BCtypeX
924 glb%BCFlag(3,icnt1) = glb%bcCond(ndbcflag)%BCtypeY
925 glb%BCFlag(4,icnt1) = glb%bcCond(ndbcflag)%BCtypeZ
926 glb%BCvalue(1,icnt1) = glb%bcCond(ndbcflag)%BCvalueX
927 glb%BCvalue(2,icnt1) = glb%bcCond(ndbcflag)%BCvalueY
928 glb%BCvalue(3,icnt1) = glb%bcCond(ndbcflag)%BCvalueZ
930 glb%AccelBndry(icnt1*3-2:icnt1*3) = glb%BCValueGlb(icnt4:icnt4+2)
932 glb%VeloBndry(icnt1*3-2:icnt1*3) = glb%BCValueGlb(icnt4:icnt4+2)
937 ndbcflag = glb%BCFlagCrypt(2,
i)/10000
942 IF(ndbcflag.GT.0)
THEN
946 glb%BCFlagmm(1,icnt2) = glb%BCFlagCrypt(1,
i)
949 glb%BCFlagmm(2,icnt2) = glb%bcCondmm(ndbcflag)%BCtypeX
950 glb%BCFlagmm(3,icnt2) = glb%bcCondmm(ndbcflag)%BCtypeY
951 glb%BCFlagmm(4,icnt2) = glb%bcCondmm(ndbcflag)%BCtypeZ
952 glb%BCvaluemm(1,icnt2) = glb%bcCondmm(ndbcflag)%BCvalueX
953 glb%BCvaluemm(2,icnt2) = glb%bcCondmm(ndbcflag)%BCvalueY
954 glb%BCvaluemm(3,icnt2) = glb%bcCondmm(ndbcflag)%BCvalueZ
957 ndbcflag = mod(glb%BCFlagCrypt(2,
i),10000)/100
960 IF(ndbcflag.GT.0)
THEN
964 glb%BCFlagHT(1,icnt3) = glb%BCFlagCrypt(1,
i)
966 glb%BCFlagHT(2,icnt3) = glb%bcCondHT(ndbcflag)%BCtypeX
967 glb%BCvalueHT(1,icnt3) = glb%bcCondHT(ndbcflag)%BCvalueX
988 CALL com_call_function( man_init, 2, surwin, volwin)
990 IF(glb%ALEenabled.eqv..false.)
THEN
994 11
FORMAT(
a,
'_',
a,a1)
1002 glb%TotalMassSolidp = 0.d0
1003 glb%TotalGeomVolp = 0.d0
1005 IF(glb%iElType.EQ.4.OR.glb%iElType.EQ.10 .AND.(.NOT.(glb%NdBasedEl)))
THEN
1006 CALL
v3d4_volume(glb%MeshCoor,glb%ElConnVol,glb%MatIdVol,glb%rho, &
1007 glb%NumNP,glb%NumElVol,glb%NumMatVol,glb%Disp,1,glb%NumElVol,&
1008 glb%TotalMassSolidp,glb%TotalGeomVolp,glb%TotalGeomUndefVolp, &
1011 IF(glb%NumProbesNd.NE.0)
THEN
1026 inquire(file=
'Rocfrac/Rocin/OverlayMappings.txt',exist=glb%OverlayExist)
1028 IF(glb%OverlayExist)
THEN
1031 OPEN(456,file =
'Rocfrac/Rocin/OverlayMappings.txt')
1034 READ(456,*,iostat=ios) iprocs
1037 IF(iprocs.EQ.myid)
THEN
1057 ALLOCATE(glb%MapFaceEl2Vol1(1:glb%nf1),glb%FaceOfVolEL1(1:glb%nf1))
1060 READ(456,*) glb%MapFaceEl2Vol1(
i), glb%FaceOfVolEL1(
i)
1065 ALLOCATE(glb%MapFaceEl2Vol2(1:glb%nf2),glb%FaceOfVolEL2(1:glb%nf2))
1068 READ(456,*) glb%MapFaceEl2Vol2(
i), glb%FaceOfVolEL2(
i)
1127 include
'roccomf90.h'
1131 CALL com_delete_window( surwin)
1132 CALL com_delete_window( volwin)
1138 SUBROUTINE rocfracsoln( glb, CurrentTime, CurrentTimeStep, MAN_update_inbuff)
1144 REAL*8,
INTENT(IN) :: currenttime, currenttimestep
1145 INTEGER,
INTENT(IN) :: man_update_inbuff
1147 INTEGER,
SAVE:: istep
1150 INTEGER j,jj,jjj,
k,k1,k2,j1,
i,j2,j3,k3,k4
1152 INTEGER :: ntime_out
1156 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rnet
1157 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rnetht
1159 REAL*8 :: tvol, tvol_com
1160 REAL*8,
DIMENSION(2) :: trry_dt,trry_vol,trry_calc,trry_dv_com
1161 REAL*8,
DIMENSION(2) :: trry_energy,trry_io,trry_coh,trry_vol_com
1162 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: buf
1167 CHARACTER*8 :: ichr8
1168 CHARACTER*3 :: ai,ai1
1169 INTEGER :: myid, ierr
1171 INTEGER :: isubstep,nsubstep
1172 REAL*8 :: dt_solid_sub,
alpha
1173 REAL*8 :: currenttimestepsolid
1175 REAL*8 :: prin1, prin2, prin3
1177 INTEGER,
SAVE :: ifirststep
1182 INTEGER :: elemstart, elemend, numprocs
1185 INTEGER :: ndbcflag, icnt1, icnt5
1189 CHARACTER*4 :: ichr1, ichr2
1195 CALL mpi_comm_rank(glb%MPI_COMM_ROCFRAC,myid,ierr)
1196 CALL mpi_comm_size(glb%MPI_COMM_ROCFRAC,numprocs,ierr)
1198 debug = glb%debug_state
1200 tvol = 0.d0; tvol_com = 0.d0
1203 currenttimestepsolid = currenttimestep
1206 glb%DispOld(:) = glb%Disp(:)
1207 ALLOCATE(rnet(1:3*glb%NumNP))
1208 IF(glb%HeatTransSoln)
ALLOCATE(rnetht(1:glb%NumNP))
1210 IF(myid.EQ.0 .AND. glb%Verb.gt.0)
THEN
1211 WRITE(6,
'(A)')
'Rocfrac:'
1212 WRITE(6,
'(A,A21)')
'Rocfrac:',
'(Current DT'
1213 WRITE(6,
'(A,A6,4(A15))')
'Rocfrac:',
'Step',&
1214 '- Solid DT)',
'Global DT',&
1215 'Current DT',
'Global Time'
1216 WRITE(6,
'(A,A)')
'Rocfrac: ---------------------------',&
1217 '--------------------------------------'
1220 glb%CurrTime = currenttime
1224 DO WHILE (nsubstep.EQ.1)
1228 IF(dt_solid_sub.GE.currenttimestepsolid)
THEN
1230 glb%DT = currenttimestepsolid
1231 currenttimestepsolid = 0
1234 glb%DT = dt_solid_sub
1235 currenttimestepsolid = currenttimestepsolid - glb%DT
1238 glb%DTInv = 1.d0 / glb%DT
1243 alpha = 1.d0 - currenttimestepsolid / currenttimestep
1244 CALL com_call_function( man_update_inbuff, 1,
alpha)
1246 glb%CurrTime = currenttime + (currenttimestep-currenttimestepsolid)
1248 IF(myid.EQ.0 .AND. glb%Verb.gt.0)
WRITE(6,
'(a,i6,4e15.4)')
'Rocfrac:',&
1249 istep,(currenttimestep-currenttimestepsolid),&
1250 glb%DT,currenttimestep,glb%CurrTime
1258 IF(glb%HeatTransSoln) rnetht(:) = 0.d0
1261 IF( glb%AmplitudeTable )
THEN
1263 IF(glb%iAmpCnt.LE.glb%NumEntries-1)
THEN
1264 IF(glb%CurrTime.GT.glb%AmpTable(1,glb%iAmpCnt+1))
THEN
1265 glb%iAmpCnt = glb%iAmpCnt + 1
1268 glb%slope = glb%AmpTable(2,glb%iAmpCnt)
1269 glb%prop = glb%CurrTime*glb%AmpTable(2,glb%iAmpCnt) + glb%AmpTable(3,glb%iAmpCnt)
1274 IF(glb%ALEenabled)
THEN
1278 DO j = 1, glb%InterfaceSFNumNodes
1279 k3 = 3*glb%MapNodeSF(
j)
1282 glb%VeloBar(k1) = glb%InterfaceSFVbar(1,
j)
1283 glb%VeloBar(k2) = glb%InterfaceSFVbar(2,
j)
1284 glb%VeloBar(k3) = glb%InterfaceSFVbar(3,
j)
1290 glb%DispBar(:) = glb%DT*glb%VeloBar(:) + glb%DispBar(:)
1298 glb%MeshCoor(1,
j) = glb%Meshcoor(1,
j) + glb%DT*glb%VeloBar(j1 - 2)
1299 glb%MeshCoor(2,
j) = glb%Meshcoor(2,
j) + glb%DT*glb%VeloBar(j1 - 1)
1300 glb%MeshCoor(3,
j) = glb%Meshcoor(3,
j) + glb%DT*glb%VeloBar(j1 )
1316 glb%VeloBarOld(
k) = glb%VeloBar(
k)
1317 glb%VeloBar(
k) = glb%xmass(
j)*glb%rho(1)*(-rnet(
k))*glb%kappa
1345 DO j = 1, glb%InterfaceSNumNodes
1346 k3 = 3*glb%MapNodeS(
j)
1350 glb%VeloBar(k1) = glb%InterfaceSVbar(1,
j)
1351 glb%VeloBar(k2) = glb%InterfaceSVbar(2,
j)
1352 glb%VeloBar(k3) = glb%InterfaceSVbar(3,
j)
1353 IF(glb%InterfaceSVbar(1,
j).NE.0.d0) glb%VeloBar(k1) = glb%InterfaceSVbar(1,
j)
1354 IF(glb%InterfaceSVbar(2,
j).NE.0.d0) glb%VeloBar(k2) = glb%InterfaceSVbar(2,
j)
1355 IF(glb%InterfaceSVbar(3,
j).NE.0.d0) glb%VeloBar(k3) = glb%InterfaceSVbar(3,
j)
1363 DO j = 1, glb%InterfaceSFNumNodes
1364 k3 = 3*glb%MapNodeSF(
j)
1367 glb%VeloBar(k1) = glb%InterfaceSFVbar(1,
j)
1368 glb%VeloBar(k2) = glb%InterfaceSFVbar(2,
j)
1369 glb%VeloBar(k3) = glb%InterfaceSFVbar(3,
j)
1398 DO j = 1, glb%NumNdsBCmm
1399 k3 = glb%BCFlagmm(1,
j)*3
1402 IF(glb%BCFlagmm(2,
j).EQ.0) glb%VeloBar(k1) = 0.d0
1403 IF(glb%BCFlagmm(3,
j).EQ.0) glb%VeloBar(k2) = 0.d0
1404 IF(glb%BCFlagmm(4,
j).EQ.0) glb%VeloBar(k3) = 0.d0
1411 glb%AccelBar(:) = ( glb%VeloBar(:) - glb%VeloBarOld(:) ) * glb%DTInv
1412 IF(glb%iElType.EQ.4)
THEN
1414 CALL
v3d4_ale(glb%VeloBar,glb%AccelBar,glb%Disp,glb%VeloHalf,rnet, &
1415 glb%E,glb%xnu,glb%rho,glb%NumNP,glb%NumMatVol, &
1416 glb%NumElVol,glb%MatIdVol,glb%ElConnVol,glb%MeshCoor, &
1417 1,glb%NumElPartBndry)
1419 ELSE IF(glb%iElType.EQ.10)
THEN
1420 CALL
v3d10_ale(glb%VeloBar,glb%AccelBar,glb%Disp,glb%VeloHalf,rnet, &
1421 glb%E,glb%xnu,glb%rho,glb%NumNP,glb%NumMatVol, &
1422 glb%NumElVol,glb%MatIdVol,glb%ElConnVol,glb%MeshCoor, &
1423 1,glb%NumElPartBndry)
1429 IF(myid.Eq.0 .AND.
debug)
THEN
1430 WRITE(6,
'(A)')
'Rocfrac: finished ale'
1459 IF(myid.Eq.0 .AND.
debug)
THEN
1460 WRITE(6,
'(A)')
'Rocfrac: Applying Pressure Loading'
1463 IF(glb%iElType.EQ.8)
THEN
1468 glb%InterfaceSFElemTract, &
1469 glb%InterfaceSFNumElems, glb%InterfaceSFNumNodes, &
1470 glb%InterfaceSFElemConn, &
1471 glb%MapNodeSF,glb%LwrBnd,glb%UppBnd,glb%Meshcoor)
1476 glb%InterfaceSFnbElemTract, &
1477 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1478 glb%InterfaceSFnbElemConn, &
1479 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor)
1485 glb%InterfaceSFNumElems, glb%InterfaceSFNumNodes, &
1486 glb%InterfaceSFElemConn, &
1487 glb%MapNodeSF,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFElVolEl,&
1488 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%InterfaceSFElemTract)
1492 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1493 glb%InterfaceSFnbElemConn, &
1494 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFnbElVolEl,&
1495 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%InterfaceSFnbElemTract)
1499 IF(myid.Eq.0 .AND.
debug)
THEN
1500 WRITE(6,
'(A)')
'Rocfrac: End Pressure Loading'
1513 IF(myid.Eq.0 .AND.
debug)
THEN
1514 WRITE(6,
'(A)')
'Rocfrac: Start traction loading'
1517 IF(glb%EnforceTractionS.OR.glb%EnforceTractionSF)
THEN
1530 IF(glb%iElType.EQ.8)
THEN
1533 IF(glb%EnforceTractionS)
THEN
1535 glb%InterfaceSNumElems, glb%InterfaceSNumNodes, &
1536 glb%InterfaceSElemConn, &
1537 glb%MapNodeS,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%DummyTractVal*glb%prop)
1542 IF(glb%EnforceTractionS)
THEN
1546 glb%InterfaceSNumElems, glb%InterfaceSNumNodes, &
1547 glb%InterfaceSElemConn, &
1548 glb%MapNodeS,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSElVolEl,&
1549 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%DummyTractVal*glb%prop)
1551 IF(myid.EQ.0 .AND. glb%Verb.gt.1)
THEN
1552 WRITE(6,
'(A,F12.4)')
'Rocfrac: Pressure Solid =', &
1553 glb%DummyTractVal*glb%prop
1558 IF(glb%EnforceTractionSF)
THEN
1561 glb%InterfaceSFNumElems, glb%InterfaceSFNumNodes, &
1562 glb%InterfaceSFElemConn, &
1563 glb%MapNodeSF,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFElVolEl,&
1564 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%DummyTractVal*glb%prop)
1566 IF(myid.EQ.0 .AND. glb%Verb.gt.1)
THEN
1567 WRITE(6,
'(A,F12.4)')
'Rocfrac: Pressure Solid/Fluid =',&
1568 glb%DummyTractVal*glb%prop
1573 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1574 glb%InterfaceSFnbElemConn, &
1575 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFnbElVolEl,&
1576 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%DummyTractVal*glb%prop)
1588 IF(myid.EQ.0 .AND.
debug)
THEN
1589 WRITE(6,
'(A)')
'Rocfrac: start UpdateStructural'
1592 IF(glb%HeatTransSoln)
THEN
1595 glb%InterfaceSFNumElems, glb%InterfaceSFNumNodes, &
1596 glb%InterfaceSFElemConn, &
1597 glb%MapNodeSF,glb%LwrBnd,glb%UppBnd, glb%MeshCoor, &
1598 glb%MapSFElVolEl,glb%ElConnVol,glb%iElType,glb%NumElVol, &
1599 glb%InterfaceSFHeatFlux)
1608 IF(myid.EQ.0 .AND.glb%Verb.gt.1)
THEN
1609 WRITE(6,
'(A)')
'Rocfrac: MaxTemperature',maxval(glb%Temperature)
1618 IF(myid.EQ.0 .AND.
debug)
THEN
1619 WRITE(6,
'(A)')
'Rocfrac: finished UpdateStructural'
1623 glb%S12,glb%S23,glb%S13, &
1624 glb%iStrGss,glb%NumElVol,glb%SVonMises)
1630 IF(glb%ALEenabled)
THEN
1641 a1 = rnet(
k) * glb%xmass(
j)
1653 ELSE IF(.NOT.(glb%DampEnabled))
THEN
1665 a1 = rnet(
k) * glb%xmass(
j)
1674 glb%VeloHalf(
k) = glb%VeloHalf(
k) + glb%DT * ( glb%Accel(
k)+a1 ) * 0.5d0
1689 dispprev = glb%Disp(
k)
1697 glb%Disp(
k)= glb%DT*glb%DT*rnet(
k)*glb%xmass(
j) + glb%Disp(
k) + glb%DT*glb%VeloHalf(
k)
1706 glb%VeloHalf(
k) = ( glb%Disp(
k)-dispprev )* glb%DTInv
1716 IF(myid.EQ.0 .AND.
debug)
THEN
1717 WRITE(6,
'(A)')
'Rocfrac: start bc'
1720 IF(glb%NumNdsBC.NE.0)
THEN
1721 CALL
bc_enforce(glb%NumNdsBC,glb%NumNP,glb%BCFlag,glb%BCvalue,glb%slope,glb%prop,&
1722 glb%VeloBndry,glb%AccelBndry,glb%VeloHalf,glb%Accel,glb%Disp,glb%DT,rnet,&
1723 glb%xmass,glb%DampEnabled,glb%CurrTime)
1727 IF(myid.EQ.0 .AND.
debug)
THEN
1728 WRITE(6,
'(A)')
'Rocfrac: finished bc'
1733 IF(glb%ALEenabled)
THEN
1734 glb%VeloHalf(:) = glb%DT*glb%Accel(:) + glb%VeloHalf(:)
1735 glb%Disp(:) = glb%DT*glb%VeloHalf(:) + glb%Disp(:)
1736 ELSE IF(.NOT.(glb%DampEnabled))
THEN
1748 glb%Disp(:) = glb%DT*glb%DT*glb%Accel(:)*0.5d0 + glb%DT*glb%VeloHalf(:) + glb%Disp(:)
1751 IF(myid.EQ.0 .AND. glb%Verb.gt.1)
THEN
1752 WRITE(6,
'(A,F12.4)')
'Rocfrac: MAX DISPLACEMENT =', maxval(glb%Disp(:))
1758 glb%DispTotal(:) = glb%Disp(:) + glb%DispBar(:)
1775 IF(myid.EQ.0 .AND.
debug)
THEN
1776 WRITE(6,
'(A)')
'Rocfrac: finished mass volume conservation'
1778 glb%TotalMassSolidp = 0.d0
1779 glb%TotalGeomVolp = 0.d0
1781 IF(glb%iElType.EQ.4 .OR. glb%iElType.EQ.10 .AND.(.NOT.(glb%NdBasedEl)) )
THEN
1782 CALL
v3d4_volume(glb%MeshCoor,glb%ElConnVol,glb%MatIdVol,glb%rho, &
1783 glb%NumNP,glb%NumElVol,glb%NumMatVol,glb%Disp,1,glb%NumElVol,&
1784 glb%TotalMassSolidp,glb%TotalGeomVolp,glb%TotalGeomUndefVolp, &
1788 DO i = 1, glb%NumProbesNd
1789 IF(glb%PointOnProc(
i))
THEN
1790 WRITE(ichr1,
'(i4.4)')
i
1791 WRITE(ichr2,
'(I4.4)') myid
1793 OPEN(440+
i,file=
'Rocfrac/Rocout/Probe.'//ichr1//
'.'//ichr2,position=
'APPEND')
1794 WRITE(440+
i,*) glb%CurrTime, glb%Disp( glb%ProbeNd(
i)*3-2), &
1795 glb%Disp( glb%ProbeNd(
i)*3-1) , glb%Disp( glb%ProbeNd(
i)*3)
1805 IF(myid.EQ.0 .AND.
debug)
THEN
1806 WRITE(6,
'(A)')
'Rocfrac: structural boundary conditions start'
1811 DO i = 1, glb%NumNdsBCcrypt
1813 ndbcflag = mod(glb%BCFlagCrypt(2,
i),100)
1815 IF(ndbcflag.GT.0)
THEN
1819 glb%BCValueGlb(icnt1:icnt1+2) = glb%AccelBndry(icnt5*3-2:icnt5*3)
1821 glb%BCValueGlb(icnt1:icnt1+2) = glb%VeloBndry(icnt5*3-2:icnt5*3)
1827 IF(myid.EQ.0 .AND.
debug)
THEN
1828 WRITE(6,
'(A)')
'Rocfrac: END SOLID STEP'
1858 INTEGER :: iinterfacenode
1859 INTEGER ::
k,k1,k2,k3
1861 INTEGER :: myid,ierr
1863 CALL mpi_comm_rank(glb%MPI_COMM_ROCFRAC,myid,ierr)
1870 DO iinterfacenode = 1, glb%InterfaceSFNumNodes
1871 k = glb%MapNodeSF(iinterfacenode)
1877 glb%InterfaceSFNodalCoors(1:3,iinterfacenode) = glb%MeshCoor(1:3,
k)
1881 glb%InterfaceSFTotalNodalDisps(1,iinterfacenode) = glb%Disp(k1)
1882 glb%InterfaceSFTotalNodalDisps(2,iinterfacenode) = glb%Disp(k2)
1883 glb%InterfaceSFTotalNodalDisps(3,iinterfacenode) = glb%Disp(k3)
1888 glb%InterfaceSFNodalDisps(1,iinterfacenode) = glb%Disp(k1) + glb%DispBar(k1)
1889 glb%InterfaceSFNodalDisps(2,iinterfacenode) = glb%Disp(k2) + glb%DispBar(k2)
1890 glb%InterfaceSFNodalDisps(3,iinterfacenode) = glb%Disp(k3) + glb%DispBar(k3)
1895 glb%InterfaceSFNodalVels(1,iinterfacenode) = glb%VeloHalf(k1)
1896 glb%InterfaceSFNodalVels(2,iinterfacenode) = glb%VeloHalf(k2)
1897 glb%InterfaceSFNodalVels(3,iinterfacenode) = glb%VeloHalf(k3)
1901 DO iinterfacenode = 1, glb%InterfaceSFnbNumNodes
1902 k = glb%MapNodeSFnb(iinterfacenode)
1908 glb%InterfaceSFnbNodalCoors(1:3,iinterfacenode) = glb%MeshCoor(1:3,
k)
1912 glb%InterfaceSFnbTotalNodalDisps(1,iinterfacenode) = glb%Disp(k1)
1913 glb%InterfaceSFnbTotalNodalDisps(2,iinterfacenode) = glb%Disp(k2)
1914 glb%InterfaceSFnbTotalNodalDisps(3,iinterfacenode) = glb%Disp(k3)
1919 glb%InterfaceSFnbNodalDisps(1,iinterfacenode) = glb%Disp(k1) + glb%DispBar(k1)
1920 glb%InterfaceSFnbNodalDisps(2,iinterfacenode) = glb%Disp(k2) + glb%DispBar(k2)
1921 glb%InterfaceSFnbNodalDisps(3,iinterfacenode) = glb%Disp(k3) + glb%DispBar(k3)
1926 glb%InterfaceSFnbNodalVels(1,iinterfacenode) = glb%VeloHalf(k1)
1927 glb%InterfaceSFnbNodalVels(2,iinterfacenode) = glb%VeloHalf(k2)
1928 glb%InterfaceSFnbNodalVels(3,iinterfacenode) = glb%VeloHalf(k3)
1932 DO iinterfacenode = 1, glb%InterfaceSFnbNumNodes
1933 k = glb%MapNodeSFnb(iinterfacenode)
1939 glb%InterfaceSFnbNodalCoors(1:3,iinterfacenode) = glb%MeshCoor(1:3,
k)
1943 glb%InterfaceSFnbTotalNodalDisps(1,iinterfacenode) = glb%Disp(k1)
1944 glb%InterfaceSFnbTotalNodalDisps(2,iinterfacenode) = glb%Disp(k2)
1945 glb%InterfaceSFnbTotalNodalDisps(3,iinterfacenode) = glb%Disp(k3)
1950 glb%InterfaceSFnbNodalDisps(1,iinterfacenode) = glb%Disp(k1) + glb%DispBar(k1)
1951 glb%InterfaceSFnbNodalDisps(2,iinterfacenode) = glb%Disp(k2) + glb%DispBar(k2)
1952 glb%InterfaceSFnbNodalDisps(3,iinterfacenode) = glb%Disp(k3) + glb%DispBar(k3)
1957 glb%InterfaceSFnbNodalVels(1,iinterfacenode) = glb%VeloHalf(k1)
1958 glb%InterfaceSFnbNodalVels(2,iinterfacenode) = glb%VeloHalf(k2)
1959 glb%InterfaceSFnbNodalVels(3,iinterfacenode) = glb%VeloHalf(k3)
1965 DO iinterfacenode = 1, glb%InterfaceSNumNodes
1967 k = abs(glb%MapNodeS(iinterfacenode))
1969 IF((
k .le. 0).or.(
k .gt. glb%NumNP))
THEN
1974 glb%InterfaceSNodalCoors(1,iinterfacenode) = glb%MeshCoor(1,
k)
1975 glb%InterfaceSNodalCoors(2,iinterfacenode) = glb%MeshCoor(2,
k)
1976 glb%InterfaceSNodalCoors(3,iinterfacenode) = glb%MeshCoor(3,
k)
1989 IF(glb%HeatTransSoln .eqv. .true.)
THEN
1990 IF(myid.EQ.0 .AND. glb%Verb .gt. 1)
THEN
1991 WRITE(*,
'(A)')
'Rocfrac: Doing heat transfer'
1993 DO iinterfacenode = 1, glb%InterfaceSFNumNodes
1994 k = glb%MapNodeSF(iinterfacenode)
1996 glb%InterfaceSFNodalTemp(iinterfacenode) = glb%Temperature(
k)
2009 REAL*8,
INTENT(IN) ::
alpha
2010 INTEGER :: triconn(1:3)
2012 REAL*8 :: radius, signx,signy,signz
2014 INTEGER,
SAVE :: icnt
2161 DO i = 1, glb%InterfaceSFNumNodes
2163 glb%InterfaceSFVbar(1,
i) = 0.00075
2164 glb%InterfaceSFVbar(2,
i) = 0.
2165 glb%InterfaceSFVbar(3,
i) = 0.
subroutine vol_elem_mat_matous(glb)
subroutine vol_elem_mat(e, xnu, ci, cj, numat_vol, Integration)
subroutine updatestructural(glb, NumProcs, Rnet)
subroutine tractpressload(R_ex, numnp, InterfaceSFNumElems, InterfaceSFNumNodes, InterfaceSFElemConn, MapNodeSF, LwrBnd, UppBnd, coor, Disp, MapSFElVolEl, ElConnVol, iElType, NumElVol, TractPress)
subroutine, public rocfracinitialize(glb, InitialTime, MPI_COMM_ROCSTAR, MAN_init, surfIn, volIn, obtain_attr)
subroutine rocfracinterfacebuff(glb)
subroutine feminp(glb, myid)
subroutine tractloadpress_hex(R_ex, numnp, InterfaceNumElems, InterfaceNumNodes, InterfaceElemConn, MapNode, LwrBnd, UppBnd, coor, InterfaceElemTract)
subroutine heatfluxload(Rnet, NumNP, InterfaceNumElems, InterfaceNumNodes, InterfaceElemConn, MapNode, LwrBnd, UppBnd, Coor, MapSFElVolEl, ElConnVol, iElType, NumElVol, BCqflux)
subroutine updatestructuralht(glb, NumProcs, Rnet, RnetHT)
subroutine fluidpressload(NumNP, R_ex, InterfaceSFNumElems, InterfaceSFNumNodes, InterfaceSFElemConn, MapNodeSF, LwrBnd, UppBnd, coor, Disp, MapSFElVolEl, ElConnVol, iElType, NumElVol, TractPress)
subroutine rocfracupdateinbuff(glb, alpha)
subroutine principal_stress(s11, s22, s33, s12, s23, s13, istrgss, NumElVol, SVonMises)
subroutine bc_enforce(numbound, numnp, id, r, slope, prop, vb, ab, v, a, d, delta, Rnet, xm, DampEnabled, CurrTime)
subroutine volratio(n1, n2, n3, n4, AlphaR, coor, numnp, NdMassLump)
subroutine max_dt_solid(dt_courant, glb)
subroutine updatemassmatrix(glb)
subroutine tractload_hex(R_ex, numnp, InterfaceElemTract, InterfaceNumElems, InterfaceNumNodes, InterfaceElemConn, MapNode, LwrBnd, UppBnd, coor)
subroutine updaterbar(glb, Rnet)
subroutine enhanced_elem_maps_hex(mixed_map, enhanced_map)
subroutine get_mat_stiffness(e, dnu, dmat)
subroutine, public rocfracinterfaceinitial(glb, obtain_attr, surfIn)
unsigned char alpha() const
subroutine v3d10_ale(v_bar, a_bar, d, vhalf, Rnet, E, xnu, rho, numnp, numat_vol, numlstet, matlstet, lmlstet, meshcoor, nstart, nend)
subroutine, public rocfracsoln(glb, CurrentTime, CurrentTimeStep, MAN_update_inbuff)
subroutine, public rocfracfinalize(glb)
subroutine findprobe(glb, myid)
subroutine v3d4_ale(v_bar, a_bar, d, vhalf, Rnet, E, xnu, rho, numnp, numat_vol, numcstet, matcstet, lmcstet, meshcoor, nstart, nend)
subroutine v3d4_volume(coor, lmcstet, matcstet, rho, numnp, numcstet, numat_vol, Disp, nstart, nend, TotalMass, TotalGeomVolp, TotalGeomUndefVolp, NumVertx)