111 SUBROUTINE rocfracinitialize( glb, InitialTime, MPI_COMM_ROCSTAR, MAN_init, surfIn, volIn, obtain_attr)
117 include
'roccomf90.h'
120 REAL*8,
INTENT(IN) :: initialtime
121 INTEGER,
INTENT(IN) :: mpi_comm_rocstar
122 INTEGER,
INTENT(IN) :: man_init, obtain_attr
123 CHARACTER(*),
INTENT(IN) :: surfin, volin
125 INTEGER ::
i,
j,j1,jj,
k,k1,k2,idum,iaux,iaux1
129 INTEGER :: myid, numprocs, ierr
134 INTEGER,
DIMENSION(3) :: ndsurf
135 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: buf
143 CHARACTER(len=2) :: chr2
145 CHARACTER*120 :: frachdffname, meshfile
147 character(LEN=1),
POINTER,
DIMENSION(:) :: names
148 character(LEN=3) :: ichr03
149 character(LEN=4) :: ichr04
151 integer :: numeltypes2d
153 character(LEN=4) :: chreltype
154 integer :: endpt, startpt, chrlngth
157 INTEGER :: numparcomm
158 INTEGER,
pointer,
dimension(:) :: parcomm
160 INTEGER,
pointer :: arraytmp
161 INTEGER,
pointer,
dimension(:) :: arraytmp1
163 integer :: icnt1, icnt2, icnt3, icnt4
168 REAL*8 :: slicetemp, zcoord
171 glb%MPI_COMM_ROCFRAC = mpi_comm_rocstar
172 rocstar_communicator = mpi_comm_rocstar
174 CALL mpi_comm_rank(glb%MPI_COMM_ROCFRAC,myid,ierr)
175 CALL mpi_comm_size(glb%MPI_COMM_ROCFRAC,numprocs,ierr)
176 WRITE(glb%MyIdChr,
'(i4.4)') myid
183 IF(myid.EQ.0)
print*,
'RocFrac :: Reading input deck'
190 glb%InterfaceSFNumNodes = 0
191 glb%InterfaceSFnbNumNodes = 0
193 print*,
'RocFrac :: ....Done Reading input deck',myid
194 CALL mpi_barrier(glb%MPI_COMM_ROCFRAC,ierr)
200 IF(glb%iElType.EQ.4)
THEN
204 ELSE IF(glb%iElType.EQ.10)
THEN
208 ELSE IF(glb%iElType.EQ.8)
THEN
216 IF(myid.EQ.0)
print*,
'RocFrac :: Reading Mesh'
222 CALL com_new_window( volwin)
224 CALL com_get_size( volin//
".nc", myid+1, glb%NumNP)
225 CALL com_set_size( volwin//
'.nc', myid+1, glb%NumNP )
228 ALLOCATE(glb%MeshCoor(1:3,1:glb%NumNP))
229 ALLOCATE(glb%xmass(1:glb%NumNP))
230 IF(glb%HeatTransSoln)
ALLOCATE(glb%CapctInv(1:glb%NumNP))
244 CALL com_get_size( volin//
".bcnode", myid+1,glb%NumNdsBCcrypt)
246 ALLOCATE(glb%BCFlagCrypt(1:2,1:glb%NumNdsBCcrypt))
248 ALLOCATE(glb%BCValueGlb(1:glb%NumNdsBCcrypt*6))
308 CALL com_get_connectivities(volin,myid+1,numeltypes2d,names)
311 DO i = 1, numeltypes2d
315 DO WHILE (endpt .LE. ubound(names,1))
316 IF (names(endpt) .NE.
' ')
THEN
317 chrlngth = chrlngth + 1
318 chreltype(chrlngth:chrlngth) = names(endpt)
327 IF(chreltype(1:chrlngth).EQ.
':T10')
THEN
328 CALL com_get_size( volin//
".:T10", myid+1, glb%NumElVol)
329 CALL com_set_size( volwin//
'.:T10', myid+1, glb%NumElVol)
330 ELSE IF(chreltype(1:chrlngth).EQ.
':T4')
THEN
331 CALL com_get_size( volin//
".:T4", myid+1, glb%NumElVol)
332 CALL com_set_size( volwin//
'.:T4', myid+1, glb%NumElVol)
333 ELSE IF(chreltype(1:chrlngth).EQ.
':H8')
THEN
334 CALL com_get_size( volin//
".:H8", myid+1, glb%NumElVol)
335 CALL com_set_size( volwin//
'.:H8', myid+1, glb%NumElVol)
337 print*,
'ROCFRAC ERROR: Volume mesh type element not supported'
338 print*,
'Read in Element Type :: ', chreltype(1:chrlngth)
339 CALL mpi_finalize(glb%MPI_COMM_ROCFRAC,ierr)
344 CALL com_free_buffer(names)
346 CALL com_get_array_const(volin//
".IMP",myid+1,arraytmp)
347 IF ( arraytmp == 1 )
THEN
355 ALLOCATE(nodeproc(1:glb%NumNP))
356 ALLOCATE(local2global(1:glb%NumNp))
358 CALL com_get_array_const(volin//
".NumNPLocal",myid+1,arraytmp)
361 CALL com_get_array_const(volin//
".NumNPGlobal",myid+1,arraytmp)
364 CALL com_get_array_const(volin//
".NodeNumGlobal",myid+1,arraytmp1)
365 local2global = arraytmp1
367 CALL com_get_array_const(volin//
".NodeProc",myid+1,arraytmp1)
379 CALL com_get_array_const(volin//
".NumElPartBndry",myid+1,arraytmp)
381 glb%NumElPartBndry = arraytmp
387 CALL com_get_array_const(volin//
".NumElVolMat",myid+1,arraytmp1)
389 ALLOCATE(glb%NumElVolMat(1:glb%NumMatVol))
391 DO i = 1, glb%NumMatVol
392 glb%NumElVolMat(
i) = arraytmp1(
i)
394 CALL com_get_array_const(volin//
".NumElPartBndryMat",myid+1,arraytmp1)
396 ALLOCATE(glb%NumElPartBndryMat(1:glb%NumMatVol))
397 DO i = 1, glb%NumMatVol
398 glb%NumElPartBndryMat(
i) = arraytmp1(
i)
401 IF(.NOT.(glb%DebondPart).AND..NOT.(glb%DebondPart_Matous))
THEN
402 ALLOCATE(glb%ci(1:9,1:glb%NumMatVol))
403 ALLOCATE(glb%cj(1:9,1:glb%NumMatVol))
404 ALLOCATE(glb%ci_full(1:6,1:6,1:glb%NumMatVol))
409 DO kk = 1, glb%NumMatVol
411 ALLOCATE(glb%MatIdVol(1:glb%NumElVol))
412 ALLOCATE(glb%ElConnVol(1:glb%iElType,1:glb%NumElVol))
417 IF(glb%NdBasedEl)
THEN
420 ALLOCATE(glb%NumElNeigh(1:glb%NumNP))
421 ALLOCATE(glb%ElConnNd(1:glb%NumNP,1:40))
422 ALLOCATE(glb%AlphaR(1:4,1:glb%NumElVol))
423 ALLOCATE(glb%VolUndfmd(1:glb%NumNP))
425 glb%NumElNeigh(:) = 0
426 glb%ElConnNd(:,:) = 0
429 DO jj = 1,glb%NumElVolMat(kk)
450 IF(glb%NdBasedEl)
THEN
452 CALL
volratio(glb%ElConnVol(1,
i),glb%ElConnVol(2,
i),glb%ElConnVol(3,
i),glb%ElConnVol(4,
i),glb%AlphaR(1:4,
i),&
453 glb%MeshCoor,glb%NumNp,glb%NdMassLump)
456 glb%NumElNeigh(glb%ElConnVol(
j,
i)) = glb%NumElNeigh(glb%ElConnVol(
j,
i)) + 1
457 glb%ElConnNd(glb%ElConnVol(
j,
i),glb%NumElNeigh(glb%ElConnVol(
j,
i))) =
i
466 IF(numprocs.NE.0)
THEN
489 glb%TotNumNeighProcs = 1
494 CALL com_get_size( volin//
".pconn", myid+1, numparcomm)
495 CALL com_set_size( volwin//
'.pconn', myid+1, numparcomm)
496 CALL com_allocate_array(volwin//
'.pconn', myid+1, parcomm, 1)
579 IF(myid.EQ.0)
print*,
'RocFrac :: Finished Reading Solids Mesh'
581 IF(.NOT.(glb%DebondPart).AND. .NOT.(glb%DebondPart_Matous) )
THEN
583 IF ( glb%NumMatOrtho == 0 )
THEN
584 ALLOCATE(glb%E11o(1:0))
585 ALLOCATE(glb%E22o(1:0))
586 ALLOCATE(glb%E33o(1:0))
587 ALLOCATE(glb%xnu12o(1:0))
588 ALLOCATE(glb%xnu13o(1:0))
589 ALLOCATE(glb%xnu23o(1:0))
590 ALLOCATE(glb%G12o(1:0))
591 ALLOCATE(glb%G13o(1:0))
592 ALLOCATE(glb%G23o(1:0))
593 ALLOCATE(glb%vx1o(1:0))
594 ALLOCATE(glb%vy1o(1:0))
595 ALLOCATE(glb%vz1o(1:0))
596 ALLOCATE(glb%vx2o(1:0))
597 ALLOCATE(glb%vy2o(1:0))
598 ALLOCATE(glb%vz2o(1:0))
599 ALLOCATE(glb%vx3o(1:0))
600 ALLOCATE(glb%vy3o(1:0))
601 ALLOCATE(glb%vz3o(1:0))
604 CALL
vol_elem_mat(glb%E,glb%xnu,glb%ci,glb%cj,glb%NumMatVol,glb%iElIntgratn,glb%MatOrtho)
605 CALL
vol_elem_mat_ortho( glb%ci_full, glb%ci, glb%NumMatVol, glb%NumMatOrtho, glb%MatOrtho, &
606 glb%E11o, glb%E22o, glb%E33o, glb%xnu12o, glb%xnu13o, glb%xnu23o, &
607 glb%G12o, glb%G13o, glb%G23o, glb%vx1o, glb%vy1o, glb%vz1o, &
608 glb%vx2o, glb%vy2o, glb%vz2o, glb%vx3o, glb%vy3o, glb%vz3o )
610 ELSE IF(glb%DebondPart_Matous)
THEN
612 ALLOCATE( glb%StrainOld(1:4,1:glb%NumElVol*6) )
613 ALLOCATE( glb%SoftParam(1:4,1:glb%NumElVol) )
614 ALLOCATE( glb%cd(1:4,1:glb%NumElVol) )
618 ELSE IF(glb%DebondPart)
THEN
620 ALLOCATE(glb%STATEV_Part1(1:glb%NumElVol))
621 ALLOCATE(glb%STATEV_Part2(1:glb%NumElVol))
623 glb%STATEV_Part1(:) = 1
624 glb%STATEV_Part2(:) = 1
626 ALLOCATE(glb%StrainTrace(1:glb%NumElVol))
630 IF(glb%iElType.EQ.8)
THEN
632 allocate(glb%mixed_map(1:8,1:9,1:12))
633 allocate(glb%enhanced_map(1:8,1:9,1:9))
634 allocate(glb%Aenh(1:9,1:glb%NumElVol))
637 glb%enhanced_map = 0.d0
643 IF (glb%HeatTransSoln)
THEN
644 allocate(glb%dmat(1:glb%NumMatVol,1:3,1:3))
647 allocate(glb%dmat(1:glb%NumMatVol,1:9,1:9))
649 DO i = 1, glb%NumMatVol
656 ALLOCATE(glb%Disp(1:3*glb%NumNP))
659 ALLOCATE(glb%Accel(1:3*glb%NumNP))
662 ALLOCATE(glb%DispOld(1:3*glb%NumNP))
663 ALLOCATE(glb%S11(1:glb%iStrGss,1:glb%NumElVol),glb%S22(1:glb%iStrGss,1:glb%NumElVol))
664 ALLOCATE(glb%S33(1:glb%iStrGss,1:glb%NumElVol) )
665 ALLOCATE(glb%S12(1:glb%iStrGss,1:glb%NumElVol),glb%S23(1:glb%iStrGss,1:glb%NumElVol))
666 ALLOCATE(glb%S13(1:glb%iStrGss,1:glb%NumElVol) )
667 ALLOCATE(glb%SVonMises(1:glb%NumElVol))
669 IF(glb%HeatTransSoln)
THEN
670 ALLOCATE(glb%Temperature(1:glb%NumNP))
671 glb%Temperature(1:glb%NumNP) = glb%Temperature0
674 IF(glb%ArtificialDamping)
THEN
675 ALLOCATE(glb%DetF_Old(1:glb%iStrGss,1:glb%NumElVol))
676 glb%DetF_Old(:,:) = 1.d0
680 ALLOCATE(glb%DispBar(1:3*glb%NumNP),glb%VeloBar(1:3*glb%NumNP),glb%AccelBar(1:3*glb%NumNP))
681 glb%DispBar(:) = 0.d0
682 glb%VeloBar(:) = 0.d0
683 glb%AccelBar(:) = 0.d0
686 ALLOCATE(glb%VeloHalf(1:3*glb%NumNP),glb%VeloBarOld(1:3*glb%NumNP))
687 glb%VeloHalf(:) = 0.d0
688 glb%VeloBarOld(:) = 0.d0
690 ALLOCATE(glb%DispTotal(1:3*glb%NumNP))
692 glb%S11(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
693 glb%S22(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
694 glb%S33(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
695 glb%S12(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
696 glb%S23(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
697 glb%S13(1:glb%iStrGss,1:glb%NumElVol) = 0.d0
698 glb%SVonMises(1:glb%NumElVol) = 0.d0
709 CALL com_new_attribute( volwin//
'.disp',
'n', com_double, 3,
'm')
710 CALL com_new_attribute( volwin//
'.disp_burn',
'n',com_double, 3,
'm')
711 CALL com_new_attribute( volwin//
'.velo',
'n', com_double, 3,
'm/s')
712 CALL com_new_attribute( volwin//
'.stress',
'e', com_double, 1,
'Pa')
713 CALL com_new_attribute( volwin//
'.accel',
'n', com_double, 3,
'm/s^2')
714 CALL com_new_attribute( volwin//
'.vbar',
'n', com_double, 3,
'm/s')
715 CALL com_new_attribute( volwin//
'.S11',
'e', com_double, glb%iStrGss,
'Pa')
716 CALL com_new_attribute( volwin//
'.S22',
'e', com_double, glb%iStrGss,
'Pa')
717 CALL com_new_attribute( volwin//
'.S33',
'e', com_double, glb%iStrGss,
'Pa')
718 CALL com_new_attribute( volwin//
'.S12',
'e', com_double, glb%iStrGss,
'Pa')
719 CALL com_new_attribute( volwin//
'.S23',
'e', com_double, glb%iStrGss,
'Pa')
720 CALL com_new_attribute( volwin//
'.S13',
'e', com_double, glb%iStrGss,
'Pa')
722 CALL com_new_attribute( volwin//
'.NumElPartBndry',
'p', com_integer, 1,
'')
723 CALL com_new_attribute( volwin//
'.NumElVolMat',
'p', com_integer, 1,
'')
724 CALL com_new_attribute( volwin//
'.NumElPartBndryMat',
'p', com_integer, 1,
'')
726 IF(glb%DebondPart)
THEN
727 CALL com_new_attribute( volwin//
'.StrainTrace',
'e', com_double, 1,
' ')
728 CALL com_new_attribute( volwin//
'.DebondLg',
'e', com_double, 1,
' ')
729 CALL com_new_attribute( volwin//
'.DebondSm',
'e', com_double, 1,
' ')
732 IF(glb%DebondPart_Matous)
THEN
733 CALL com_new_attribute( volwin//
'.StrainOld',
'e', com_double, 4,
' ')
734 CALL com_new_attribute( volwin//
'.SoftParam',
'e', com_double, 4,
' ')
737 IF(glb%HeatTransSoln) CALL com_new_attribute( volwin//
'.Temp',
'n', com_double, 1,
'K')
739 IF ( glb%NumNP > 0)
THEN
746 CALL com_set_array(volwin//
'.nc', myid+1, glb%MeshCoor,3)
750 IF(glb%iElType.EQ.4)
THEN
754 CALL com_set_array( volwin//
'.:T4', myid+1, glb%ElConnVol,4)
756 ELSE IF(glb%iElType.EQ.10)
THEN
760 CALL com_set_array( volwin//
'.:T10', myid+1, glb%ElConnVol,10)
762 ELSE IF(glb%iElType.EQ.8)
THEN
765 CALL com_set_array( volwin//
'.:H8', myid+1, glb%ElConnVol,8)
769 CALL com_set_array( volwin//
'.disp', myid+1, glb%Disp,3)
770 CALL com_set_array( volwin//
'.disp_burn', myid+1, glb%DispBar,3)
771 CALL com_set_array( volwin//
'.velo', myid+1, glb%VeloHalf,3)
772 CALL com_set_array( volwin//
'.stress', myid+1, glb%SVonMises,1)
773 CALL com_set_array( volwin//
'.accel', myid+1, glb%Accel,3)
774 CALL com_set_array( volwin//
'.vbar', myid+1, glb%VeloBar,3)
775 CALL com_set_array( volwin//
'.S11', myid+1, glb%S11)
776 CALL com_set_array( volwin//
'.S22', myid+1, glb%S22)
777 CALL com_set_array( volwin//
'.S33', myid+1, glb%S33)
778 CALL com_set_array( volwin//
'.S12', myid+1, glb%S12)
779 CALL com_set_array( volwin//
'.S23', myid+1, glb%S23)
780 CALL com_set_array( volwin//
'.S13', myid+1, glb%S13)
782 CALL com_set_size( volwin//
'.NumElPartBndry', myid+1, 1)
783 CALL com_set_array( volwin//
'.NumElPartBndry', myid+1,glb%NumElPartBndry,1 )
785 CALL com_set_size( volwin//
'.NumElVolMat', myid+1, glb%NumMatVol)
786 CALL com_set_array( volwin//
'.NumElVolMat', myid+1, glb%NumElVolMat, 1)
788 CALL com_set_size( volwin//
'.NumElPartBndryMat', myid+1, glb%NumMatVol)
789 CALL com_set_array( volwin//
'.NumElPartBndryMat',myid+1, glb%NumElPartBndryMat, 1 )
791 IF(glb%HeatTransSoln) CALL com_set_array( volwin//
'.Temp', myid+1, glb%Temperature,1)
792 IF(glb%DebondPart) CALL com_set_array( volwin//
'.DebondLg', myid+1, glb%STATEV_Part1,1)
793 IF(glb%DebondPart) CALL com_set_array( volwin//
'.DebondSm', myid+1, glb%STATEV_Part2,1)
794 IF(glb%DebondPart) CALL com_set_array( volwin//
'.StrainTrace', myid+1, glb%StrainTrace,1)
795 IF(glb%DebondPart_Matous)
THEN
796 CALL com_set_array( volwin//
'.StrainOld', myid+1, glb%StrainOld,4)
797 CALL com_set_array( volwin//
'.SoftParam', myid+1, glb%SoftParam,4)
803 IF(initialtime.NE.0.d0)
THEN
804 print*,
'RocFrac :: RESTARTING, SOLIDS'
807 CALL com_new_attribute(volwin//
'.BCValue',
'p',com_double, 1,
'')
808 CALL com_set_size( volwin//
'.BCValue', myid+1, glb%NumNdsBCcrypt*6)
809 CALL com_set_array( volwin//
'.BCValue', myid+1, glb%BCValueGlb, 1)
813 CALL com_new_attribute(volwin//
'.bcnode',
'p',com_integer, 2,
'')
814 CALL com_set_size( volwin//
'.bcnode', myid+1, glb%NumNdsBCcrypt)
815 CALL com_set_array( volwin//
'.bcnode', myid+1, glb%BCFlagCrypt, 2)
817 CALL com_new_attribute(volwin//
'.MatType',
'e',com_integer, 1,
'')
818 CALL com_set_array( volwin//
'.MatType', myid+1, glb%MatIdVol, 1)
824 CALL com_window_init_done( volwin)
826 CALL com_call_function( obtain_attr, 2, &
827 com_get_attribute_handle_const( volin//
".all"), &
828 com_get_attribute_handle( volwin//
".all"))
834 glb%TotNumNeighProcs = 0
847 IF(numprocs.GT.1) glb%TotNumNeighProcs = parcomm(1)
851 ALLOCATE(glb%NeighProcList(1:glb%TotNumNeighProcs))
855 ALLOCATE(glb%NumNdComm(1:glb%TotNumNeighProcs))
856 ALLOCATE(glb%NdCommList(1:glb%TotNumNeighProcs))
863 DO i = 1, glb%TotNumNeighProcs
865 glb%NeighProcList(
i) = parcomm(iptr) -1
867 glb%NumNdComm(
i) = parcomm(iptr)
868 glb%TotNumNdComm = glb%TotNumNdComm + glb%NumNdComm(
i)
870 ALLOCATE(glb%NdCommList(
i)%NdId(1:glb%NumNdComm(
i)))
872 DO j=1,glb%NumNdComm(
i)
874 glb%NdCommList(
i)%NdId(
j) = parcomm(iptr)
880 glb%TotNumNdComm = glb%TotNumNdComm*3
882 IF(glb%TotNumNeighProcs.NE.0)
THEN
883 ALLOCATE(glb%RecvDataFrm(1:numprocs) )
884 ALLOCATE(glb%ReqRcv (1:glb%TotNumNeighProcs) )
885 ALLOCATE(glb%ReqSnd (1:glb%TotNumNeighProcs) )
887 ALLOCATE(glb%StatSnd (1:mpi_status_size,1:glb%TotNumNeighProcs) )
888 ALLOCATE(glb%StatRcv (1:mpi_status_size,1:glb%TotNumNeighProcs) )
891 IF(glb%HeatTransSoln)
THEN
892 DO j = 1, glb%TotNumNeighProcs
893 k = glb%NeighProcList(
j) + 1
894 ALLOCATE(glb%RecvDataFrm(
k)%rcvbuf(1:glb%NumNdComm(
j)*4))
897 DO j = 1, glb%TotNumNeighProcs
898 k = glb%NeighProcList(
j) + 1
899 ALLOCATE(glb%RecvDataFrm(
k)%rcvbuf(1:glb%NumNdComm(
j)*3))
904 DO i = 1, glb%NumNdsBCcrypt
905 ndbcflag = mod(glb%BCFlagCrypt(2,
i),100)
907 IF(ndbcflag.GT.0) glb%NumNdsBC = glb%NumNdsBC + 1
909 ndbcflag = glb%BCFlagCrypt(2,
i)/10000
911 IF(ndbcflag.GT.0) glb%NumNdsBCmm = glb%NumNdsBCmm + 1
913 ndbcflag = mod(glb%BCFlagCrypt(2,
i),10000)/100
915 IF(ndbcflag.GT.0) glb%NumNdsBCHT = glb%NumNdsBCHT + 1
918 IF(glb%NumNdsBC.NE.0)
THEN
919 ALLOCATE(glb%BCFlag(1:4,1:glb%NumNdsBC),glb%BCvalue(1:3,1:glb%NumNdsBC))
920 ALLOCATE(glb%AccelBndry(1:3*glb%NumNdsBC),glb%VeloBndry(1:3*glb%NumNdsBC))
922 IF(glb%NumNdsBCmm.NE.0)
ALLOCATE(glb%BCFlagmm(1:4,1:glb%NumNdsBCmm),glb%BCvaluemm(1:3,1:glb%NumNdsBCmm))
923 IF(glb%NumNdsBCHT.NE.0)
ALLOCATE(glb%BCFlagHT(1:2,1:glb%NumNdsBCHT),glb%BCvalueHT(1,1:glb%NumNdsBCHT))
945 DO i = 1, glb%NumNdsBCcrypt
948 ndbcflag = mod(glb%BCFlagCrypt(2,
i),100)
953 IF(ndbcflag.GT.0)
THEN
955 glb%BCFlag(1,icnt1) = glb%BCFlagCrypt(1,
i)
957 glb%BCFlag(2,icnt1) = glb%bcCond(ndbcflag)%BCtypeX
958 glb%BCFlag(3,icnt1) = glb%bcCond(ndbcflag)%BCtypeY
959 glb%BCFlag(4,icnt1) = glb%bcCond(ndbcflag)%BCtypeZ
960 glb%BCvalue(1,icnt1) = glb%bcCond(ndbcflag)%BCvalueX
961 glb%BCvalue(2,icnt1) = glb%bcCond(ndbcflag)%BCvalueY
962 glb%BCvalue(3,icnt1) = glb%bcCond(ndbcflag)%BCvalueZ
964 glb%AccelBndry(icnt1*3-2:icnt1*3) = glb%BCValueGlb(icnt4:icnt4+2)
966 glb%VeloBndry(icnt1*3-2:icnt1*3) = glb%BCValueGlb(icnt4:icnt4+2)
971 ndbcflag = glb%BCFlagCrypt(2,
i)/10000
976 IF(ndbcflag.GT.0)
THEN
980 glb%BCFlagmm(1,icnt2) = glb%BCFlagCrypt(1,
i)
983 glb%BCFlagmm(2,icnt2) = glb%bcCondmm(ndbcflag)%BCtypeX
984 glb%BCFlagmm(3,icnt2) = glb%bcCondmm(ndbcflag)%BCtypeY
985 glb%BCFlagmm(4,icnt2) = glb%bcCondmm(ndbcflag)%BCtypeZ
986 glb%BCvaluemm(1,icnt2) = glb%bcCondmm(ndbcflag)%BCvalueX
987 glb%BCvaluemm(2,icnt2) = glb%bcCondmm(ndbcflag)%BCvalueY
988 glb%BCvaluemm(3,icnt2) = glb%bcCondmm(ndbcflag)%BCvalueZ
991 ndbcflag = mod(glb%BCFlagCrypt(2,
i),10000)/100
994 IF(ndbcflag.GT.0)
THEN
998 glb%BCFlagHT(1,icnt3) = glb%BCFlagCrypt(1,
i)
1000 glb%BCFlagHT(2,icnt3) = glb%bcCondHT(ndbcflag)%BCtypeX
1001 glb%BCvalueHT(1,icnt3) = glb%bcCondHT(ndbcflag)%BCvalueX
1086 CALL com_call_function( man_init, 2, surwin, volwin)
1088 IF(.NOT.(glb%ALEenabled))
THEN
1092 11
FORMAT(
a,
'_',
a,a1)
1100 glb%TotalMassSolidp = 0.d0
1101 glb%TotalGeomVolp = 0.d0
1103 IF(glb%iElType.EQ.4.OR.glb%iElType.EQ.10 .AND.(.NOT.(glb%NdBasedEl)))
THEN
1104 CALL
v3d4_volume(glb%MeshCoor,glb%ElConnVol,glb%MatIdVol,glb%rho, &
1105 glb%NumNP,glb%NumElVol,glb%NumMatVol,glb%Disp,1,glb%NumElVol,&
1106 glb%TotalMassSolidp,glb%TotalGeomVolp,glb%TotalGeomUndefVolp, &
1109 IF(glb%NumProbesNd.NE.0)
THEN
1124 inquire(file=
'Rocfrac/Rocin/OverlayMappings.txt',exist=glb%OverlayExist)
1126 IF(glb%OverlayExist)
THEN
1129 OPEN(456,file =
'Rocfrac/Rocin/OverlayMappings.txt')
1132 READ(456,*,iostat=ios) iprocs
1135 IF(iprocs.EQ.myid)
THEN
1155 ALLOCATE(glb%MapFaceEl2Vol1(1:glb%nf1),glb%FaceOfVolEL1(1:glb%nf1))
1158 READ(456,*) glb%MapFaceEl2Vol1(
i), glb%FaceOfVolEL1(
i)
1163 ALLOCATE(glb%MapFaceEl2Vol2(1:glb%nf2),glb%FaceOfVolEL2(1:glb%nf2))
1166 READ(456,*) glb%MapFaceEl2Vol2(
i), glb%FaceOfVolEL2(
i)
1217 IF ( glb%IMP .eqv. .true.)
THEN
1222 IF ( glb%HeatTransSoln .eqv. .true.)
THEN
1241 include
'roccomf90.h'
1245 CALL com_delete_window( surwin)
1246 CALL com_delete_window( volwin)
1249 IF(glb%HeatTransSoln .EQV. .true.)
THEN
1265 SUBROUTINE rocfracsoln( glb, CurrentTime, CurrentTimeStep, MAN_update_inbuff)
1271 REAL*8,
INTENT(IN) :: currenttime, currenttimestep
1272 INTEGER,
INTENT(IN) :: man_update_inbuff
1274 INTEGER,
SAVE:: istep
1277 INTEGER j,jj,jjj,
k,k1,k2,j1,
i,j2,j3,k3,k4
1279 INTEGER :: ntime_out
1283 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rnet
1284 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: rnetht
1286 REAL*8 :: tvol, tvol_com
1287 REAL*8,
DIMENSION(2) :: trry_dt,trry_vol,trry_calc,trry_dv_com
1288 REAL*8,
DIMENSION(2) :: trry_energy,trry_io,trry_coh,trry_vol_com
1289 REAL*8,
ALLOCATABLE,
DIMENSION(:) :: buf
1294 CHARACTER*8 :: ichr8
1295 CHARACTER*3 :: ai,ai1
1296 INTEGER :: myid, ierr
1298 INTEGER :: isubstep,nsubstep
1299 REAL*8 :: dt_solid_sub,
alpha
1300 REAL*8 :: currenttimestepsolid
1302 REAL*8 :: prin1, prin2, prin3
1304 INTEGER,
SAVE :: ifirststep
1309 INTEGER :: elemstart, elemend, numprocs
1312 INTEGER :: ndbcflag, icnt1, icnt5
1316 CHARACTER*4 :: ichr1, ichr2
1318 REAL*8 :: tempf1, tempf2
1323 CALL mpi_comm_rank(glb%MPI_COMM_ROCFRAC,myid,ierr)
1324 CALL mpi_comm_size(glb%MPI_COMM_ROCFRAC,numprocs,ierr)
1326 debug = glb%debug_state
1328 tvol = 0.d0; tvol_com = 0.d0
1331 currenttimestepsolid = currenttimestep
1334 glb%DispOld(:) = glb%Disp(:)
1335 ALLOCATE(rnet(1:3*glb%NumNP))
1336 IF(glb%HeatTransSoln)
ALLOCATE(rnetht(1:glb%NumNP))
1339 print*,
'RocFrac :: Time Step Dt'
1340 print*,
'RocFrac :: -------------------------'
1343 glb%CurrTime = currenttime
1347 DO WHILE (nsubstep.EQ.1)
1351 IF(dt_solid_sub.GE.currenttimestepsolid)
THEN
1353 glb%DT = currenttimestepsolid
1354 currenttimestepsolid = 0
1357 glb%DT = dt_solid_sub
1358 currenttimestepsolid = currenttimestepsolid - glb%DT
1361 glb%DTInv = 1.d0 / glb%DT
1366 alpha = 1.d0 - currenttimestepsolid / currenttimestep
1367 CALL com_call_function( man_update_inbuff, 1,
alpha)
1369 glb%CurrTime = currenttime + (currenttimestep-currenttimestepsolid)
1371 IF(myid.EQ.0)
WRITE(*,
'(a10,i10,4e12.4)')
'RocFrac ::', istep, &
1372 (currenttimestep-currenttimestepsolid), glb%DT,currenttimestep,glb%CurrTime
1380 IF(glb%HeatTransSoln) rnetht(:) = 0.d0
1383 IF( glb%AmplitudeTable )
THEN
1385 IF(glb%iAmpCnt.LE.glb%NumEntries-1)
THEN
1386 IF(glb%CurrTime.GT.glb%AmpTable(1,glb%iAmpCnt+1))
THEN
1387 glb%iAmpCnt = glb%iAmpCnt + 1
1390 glb%slope = glb%AmpTable(2,glb%iAmpCnt)
1391 glb%prop = glb%CurrTime*glb%AmpTable(2,glb%iAmpCnt) + glb%AmpTable(3,glb%iAmpCnt)
1396 IF(glb%ALEenabled)
THEN
1400 DO j = 1, glb%InterfaceSFNumNodes
1401 k3 = 3*glb%MapNodeSF(
j)
1404 glb%VeloBar(k1) = glb%InterfaceSFVbar(1,
j)
1405 glb%VeloBar(k2) = glb%InterfaceSFVbar(2,
j)
1406 glb%VeloBar(k3) = glb%InterfaceSFVbar(3,
j)
1412 glb%DispBar(:) = glb%DT*glb%VeloBar(:) + glb%DispBar(:)
1420 glb%MeshCoor(1,
j) = glb%Meshcoor(1,
j) + glb%DT*glb%VeloBar(j1 - 2)
1421 glb%MeshCoor(2,
j) = glb%Meshcoor(2,
j) + glb%DT*glb%VeloBar(j1 - 1)
1422 glb%MeshCoor(3,
j) = glb%Meshcoor(3,
j) + glb%DT*glb%VeloBar(j1 )
1438 glb%VeloBarOld(
k) = glb%VeloBar(
k)
1439 glb%VeloBar(
k) = glb%xmass(
j)*glb%rho(1)*(-rnet(
k))*glb%kappa
1467 DO j = 1, glb%InterfaceSNumNodes
1468 k3 = 3*glb%MapNodeS(
j)
1471 glb%VeloBar(k1) = glb%InterfaceSVbar(1,
j)
1472 glb%VeloBar(k2) = glb%InterfaceSVbar(2,
j)
1473 glb%VeloBar(k3) = glb%InterfaceSVbar(3,
j)
1474 IF(glb%InterfaceSVbar(1,
j).NE.0.d0) glb%VeloBar(k1) = glb%InterfaceSVbar(1,
j)
1475 IF(glb%InterfaceSVbar(2,
j).NE.0.d0) glb%VeloBar(k2) = glb%InterfaceSVbar(2,
j)
1476 IF(glb%InterfaceSVbar(3,
j).NE.0.d0) glb%VeloBar(k3) = glb%InterfaceSVbar(3,
j)
1483 DO j = 1, glb%InterfaceSFNumNodes
1484 k3 = 3*glb%MapNodeSF(
j)
1487 glb%VeloBar(k1) = glb%InterfaceSFVbar(1,
j)
1488 glb%VeloBar(k2) = glb%InterfaceSFVbar(2,
j)
1489 glb%VeloBar(k3) = glb%InterfaceSFVbar(3,
j)
1518 DO j = 1, glb%NumNdsBCmm
1519 k3 = glb%BCFlagmm(1,
j)*3
1522 IF(glb%BCFlagmm(2,
j).EQ.0) glb%VeloBar(k1) = 0.d0
1523 IF(glb%BCFlagmm(3,
j).EQ.0) glb%VeloBar(k2) = 0.d0
1524 IF(glb%BCFlagmm(4,
j).EQ.0) glb%VeloBar(k3) = 0.d0
1531 glb%AccelBar(:) = ( glb%VeloBar(:) - glb%VeloBarOld(:) ) * glb%DTInv
1532 IF(glb%iElType.EQ.4)
THEN
1534 CALL
v3d4_ale(glb%VeloBar,glb%AccelBar,glb%Disp,glb%VeloHalf,rnet, &
1535 glb%E,glb%xnu,glb%rho,glb%NumNP,glb%NumMatVol, &
1536 glb%NumElVol,glb%MatIdVol,glb%ElConnVol,glb%MeshCoor, &
1537 1,glb%NumElPartBndry)
1539 ELSE IF(glb%iElType.EQ.10)
THEN
1540 CALL
v3d10_ale(glb%VeloBar,glb%AccelBar,glb%Disp,glb%VeloHalf,rnet, &
1541 glb%E,glb%xnu,glb%rho,glb%NumNP,glb%NumMatVol, &
1542 glb%NumElVol,glb%MatIdVol,glb%ElConnVol,glb%MeshCoor, &
1543 1,glb%NumElPartBndry)
1579 IF(glb%iElType.EQ.8)
THEN
1581 IF(glb%InterfaceSFnbNumElems.GT.0)
THEN
1584 IF ( glb%HeatTransSoln )
THEN
1586 CALL
heatload_hex(rnetht,glb%NumNP,glb%InterfaceSFnbHeatFlux, &
1587 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1588 glb%InterfaceSFnbElemConn, &
1589 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor)
1594 glb%InterfaceSFnbElemTract, &
1595 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1596 glb%InterfaceSFnbElemConn, &
1597 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor)
1605 glb%InterfaceSFNumElems, glb%InterfaceSFNumNodes, &
1606 glb%InterfaceSFElemConn, &
1607 glb%MapNodeSF,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFElVolEl,&
1608 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%InterfaceSFElemTract)
1611 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1612 glb%InterfaceSFnbElemConn, &
1613 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFnbElVolEl,&
1614 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%InterfaceSFnbElemTract)
1656 IF(glb%EnforceTractionS.OR.glb%EnforceTractionSF)
THEN
1669 IF(glb%iElType.EQ.8)
THEN
1672 IF(glb%EnforceTractionS)
THEN
1674 glb%InterfaceSNumElems, glb%InterfaceSNumNodes, &
1675 glb%InterfaceSElemConn, &
1676 glb%MapNodeS,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%DummyTractVal*glb%prop)
1681 IF(glb%EnforceTractionS)
THEN
1685 glb%InterfaceSNumElems, glb%InterfaceSNumNodes, &
1686 glb%InterfaceSElemConn, &
1687 glb%MapNodeS,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSElVolEl,&
1688 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%DummyTractVal*glb%prop)
1690 IF(myid.EQ.0)
print*,
'Pressure Solid =', glb%DummyTractVal*glb%prop
1694 IF(glb%EnforceTractionSF)
THEN
1697 glb%InterfaceSFNumElems, glb%InterfaceSFNumNodes, &
1698 glb%InterfaceSFElemConn, &
1699 glb%MapNodeSF,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFElVolEl,&
1700 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%DummyTractVal*glb%prop)
1702 IF(myid.EQ.0)
print*,
'Pressure Solid/Fluid =', glb%DummyTractVal*glb%prop
1706 glb%InterfaceSFnbNumElems, glb%InterfaceSFnbNumNodes, &
1707 glb%InterfaceSFnbElemConn, &
1708 glb%MapNodeSFnb,glb%LwrBnd,glb%UppBnd,glb%Meshcoor,glb%Disp,glb%MapSFnbElVolEl,&
1709 glb%ElConnVol,glb%iElType,glb%NumElVol,glb%DummyTractVal*glb%prop)
1718 IF ( .NOT.( glb%IMP ) )
THEN
1727 IF(glb%HeatTransSoln)
THEN
1731 IF(
debug)
print*,
'MaxTemperature',maxval(glb%Temperature)
1742 glb%S12,glb%S23,glb%S13, &
1743 glb%iStrGss,glb%NumElVol,glb%SVonMises)
1749 IF(glb%ALEenabled)
THEN
1760 a1 = rnet(
k) * glb%xmass(
j)
1772 ELSE IF(.NOT.(glb%DampEnabled))
THEN
1784 a1 = rnet(
k) * glb%xmass(
j)
1793 glb%VeloHalf(
k) = glb%VeloHalf(
k) + glb%DT * ( glb%Accel(
k)+a1 ) * 0.5d0
1808 dispprev = glb%Disp(
k)
1816 glb%Disp(
k)= glb%DT*glb%DT*rnet(
k)*glb%xmass(
j) + glb%Disp(
k) + glb%DT*glb%VeloHalf(
k)
1825 glb%VeloHalf(
k) = ( glb%Disp(
k)-dispprev )* glb%DTInv
1837 IF(glb%NumNdsBC.NE.0)
THEN
1838 CALL
bc_enforce(glb%NumNdsBC,glb%NumNP,glb%BCFlag,glb%BCvalue,glb%slope,glb%prop,&
1839 glb%VeloBndry,glb%AccelBndry,glb%VeloHalf,glb%Accel,glb%Disp,glb%DT,rnet,&
1840 glb%xmass,glb%DampEnabled,glb%CurrTime)
1849 IF(glb%ALEenabled)
THEN
1850 glb%VeloHalf(:) = glb%DT*glb%Accel(:) + glb%VeloHalf(:)
1851 glb%Disp(:) = glb%DT*glb%VeloHalf(:) + glb%Disp(:)
1852 ELSE IF(.NOT.(glb%DampEnabled))
THEN
1864 glb%Disp(:) = glb%DT*glb%DT*glb%Accel(:)*0.5d0 + glb%DT*glb%VeloHalf(:) + glb%Disp(:)
1870 IF ( glb%HeatTransSoln )
THEN
1872 CALL
thermal_soln(currenttimestep,currenttime,rnetht,glb,istep)
1883 tempf2 = glb%Disp(3*
i-2)*glb%Disp(3*
i-2) + glb%Disp(3*
i-1)*glb%Disp(3*
i-1) + glb%Disp(3*
i)*glb%Disp(3*
i)
1884 tempf1 =
max(tempf1,tempf2)
1886 tempf1 =
sqrt(tempf1)
1887 print*,myid,currenttime+currenttimestep,
'999 999',tempf1
1888 IF ( abs(maxval(glb%Disp(:))) > abs(minval(glb%Disp(:))) )
THEN
1889 print*,myid,currenttime+currenttimestep,
'888 888',maxval(glb%Disp(:))
1891 print*,myid,currenttime+currenttimestep,
'888 888',minval(glb%Disp(:))
1897 IF(
debug)
print*,
'MAX DISPLACEMENT =', maxval(glb%Disp(:))
1903 glb%DispTotal(:) = glb%Disp(:) + glb%DispBar(:)
1920 IF(
debug)
print*,
'finished mass volume conservation'
1922 glb%TotalMassSolidp = 0.d0
1923 glb%TotalGeomVolp = 0.d0
1925 IF(glb%iElType.EQ.4 .OR. glb%iElType.EQ.10 .AND.(.NOT.(glb%NdBasedEl)) )
THEN
1926 CALL
v3d4_volume(glb%MeshCoor,glb%ElConnVol,glb%MatIdVol,glb%rho, &
1927 glb%NumNP,glb%NumElVol,glb%NumMatVol,glb%Disp,1,glb%NumElVol,&
1928 glb%TotalMassSolidp,glb%TotalGeomVolp,glb%TotalGeomUndefVolp, &
1932 IF (glb%HeatTransSoln)
THEN
1933 DO i = 1, glb%NumProbesNd
1934 IF(glb%PointOnProc(
i))
THEN
1935 WRITE(ichr1,
'(i4.4)')
i
1936 WRITE(ichr2,
'(I4.4)') myid
1938 OPEN(440+
i,file=
'Rocfrac/Rocout/Probe.'//ichr1//
'.'//ichr2,position=
'APPEND')
1939 WRITE(440+
i,*) glb%CurrTime, glb%Temperature(glb%ProbeNd(
i))
1944 DO i = 1, glb%NumProbesNd
1945 IF(glb%PointOnProc(
i))
THEN
1946 WRITE(ichr1,
'(i4.4)')
i
1947 WRITE(ichr2,
'(I4.4)') myid
1949 OPEN(440+
i,file=
'Rocfrac/Rocout/Probe.'//ichr1//
'.'//ichr2,position=
'APPEND')
1950 WRITE(440+
i,*) glb%CurrTime, glb%Disp( glb%ProbeNd(
i)*3-2), glb%Disp( glb%ProbeNd(
i)*3-1) , glb%Disp( glb%ProbeNd(
i)*3)
1962 IF(
debug)
print*,
'structural boundary conditions start'
1966 DO i = 1, glb%NumNdsBCcrypt
1968 ndbcflag = mod(glb%BCFlagCrypt(2,
i),100)
1970 IF(ndbcflag.GT.0)
THEN
1974 glb%BCValueGlb(icnt1:icnt1+2) = glb%AccelBndry(icnt5*3-2:icnt5*3)
1976 glb%BCValueGlb(icnt1:icnt1+2) = glb%VeloBndry(icnt5*3-2:icnt5*3)
1982 IF(myid.EQ.0)
print*,
'RocFrac :: END SOLID STEP'
2011 INTEGER :: iinterfacenode
2012 INTEGER ::
k,k1,k2,k3
2014 INTEGER :: myid,ierr
2016 DO iinterfacenode = 1, glb%InterfaceSFNumNodes
2017 k = glb%MapNodeSF(iinterfacenode)
2023 glb%InterfaceSFNodalCoors(1:3,iinterfacenode) = glb%MeshCoor(1:3,
k)
2027 glb%InterfaceSFTotalNodalDisps(1,iinterfacenode) = glb%Disp(k1)
2028 glb%InterfaceSFTotalNodalDisps(2,iinterfacenode) = glb%Disp(k2)
2029 glb%InterfaceSFTotalNodalDisps(3,iinterfacenode) = glb%Disp(k3)
2034 glb%InterfaceSFNodalDisps(1,iinterfacenode) = glb%Disp(k1) + glb%DispBar(k1)
2035 glb%InterfaceSFNodalDisps(2,iinterfacenode) = glb%Disp(k2) + glb%DispBar(k2)
2036 glb%InterfaceSFNodalDisps(3,iinterfacenode) = glb%Disp(k3) + glb%DispBar(k3)
2041 glb%InterfaceSFNodalAccel(1,iinterfacenode) = glb%Accel(k1)
2042 glb%InterfaceSFNodalAccel(2,iinterfacenode) = glb%Accel(k2)
2043 glb%InterfaceSFNodalAccel(3,iinterfacenode) = glb%Accel(k3)
2048 glb%InterfaceSFNodalVels(1,iinterfacenode) = glb%VeloHalf(k1)
2049 glb%InterfaceSFNodalVels(2,iinterfacenode) = glb%VeloHalf(k2)
2050 glb%InterfaceSFNodalVels(3,iinterfacenode) = glb%VeloHalf(k3)
2054 DO iinterfacenode = 1, glb%InterfaceSFnbNumNodes
2055 k = glb%MapNodeSFnb(iinterfacenode)
2061 glb%InterfaceSFnbNodalCoors(1:3,iinterfacenode) = glb%MeshCoor(1:3,
k)
2065 glb%InterfaceSFnbTotalNodalDisps(1,iinterfacenode) = glb%Disp(k1)
2066 glb%InterfaceSFnbTotalNodalDisps(2,iinterfacenode) = glb%Disp(k2)
2067 glb%InterfaceSFnbTotalNodalDisps(3,iinterfacenode) = glb%Disp(k3)
2072 glb%InterfaceSFnbNodalDisps(1,iinterfacenode) = glb%Disp(k1) + glb%DispBar(k1)
2073 glb%InterfaceSFnbNodalDisps(2,iinterfacenode) = glb%Disp(k2) + glb%DispBar(k2)
2074 glb%InterfaceSFnbNodalDisps(3,iinterfacenode) = glb%Disp(k3) + glb%DispBar(k3)
2079 glb%InterfaceSFnbNodalVels(1,iinterfacenode) = glb%VeloHalf(k1)
2080 glb%InterfaceSFnbNodalVels(2,iinterfacenode) = glb%VeloHalf(k2)
2081 glb%InterfaceSFnbNodalVels(3,iinterfacenode) = glb%VeloHalf(k3)
2085 glb%InterfaceSFnbNodalAccel(1,iinterfacenode) = glb%Accel(k1)
2086 glb%InterfaceSFnbNodalAccel(2,iinterfacenode) = glb%Accel(k2)
2087 glb%InterfaceSFnbNodalAccel(3,iinterfacenode) = glb%Accel(k3)
2092 IF(glb%HeatTransSoln)
THEN
2095 IF (glb%IMP .EQV. .true.)
THEN
2096 DO iinterfacenode = 1, glb%InterfaceSFnbNumNodes
2097 k = glb%MapNodeSFnb(iinterfacenode)
2099 glb%InterfaceSFnbNodalTemp(iinterfacenode) = glb%Temperature(
k)
2102 DO iinterfacenode = 1, glb%InterfaceSFNumNodes
2103 k = glb%MapNodeSF(iinterfacenode)
2105 glb%InterfaceSFNodalTemp(iinterfacenode) = glb%Temperature(
k)
2128 REAL*8,
INTENT(IN) ::
alpha
2129 INTEGER :: triconn(1:3)
2131 REAL*8 :: radius, signx,signy,signz
2133 INTEGER,
SAVE :: icnt
2280 DO i = 1, glb%InterfaceSFNumNodes
2282 glb%InterfaceSFVbar(1,
i) = 0.00075
2283 glb%InterfaceSFVbar(2,
i) = 0.
2284 glb%InterfaceSFVbar(3,
i) = 0.
subroutine conductivitytensor(NumMatVol, k, dmat)
subroutine implicit_initialize(global)
subroutine vol_elem_mat_matous(glb)
subroutine vol_elem_mat(e, xnu, ci, cj, numat_vol, Integration)
subroutine thermal_initialize(global)
Vector_n max(const Array_n_const &v1, const Array_n_const &v2)
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 thermal_finalize(global)
subroutine implicit_soln(delt, t, fext_in, global)
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 implicit_finalize(global)
subroutine volratio(n1, n2, n3, n4, AlphaR, coor, numnp, NdMassLump)
subroutine vol_elem_mat_ortho(ci_full, ci, NumMatVol, NumMatOrtho, MatOrtho, E11, E22, E33, xnu12, xnu13, xnu23, G12, G13, G23, vx1o, vy1o, vz1o, vx2o, vy2o, vz2o, vx3o, vy3o, vz3o)
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 thermal_soln(delt, t, rext_in, global, istep)
subroutine heatload_hex(Q_ex, numnp, InterfaceHeatFlux, InterfaceNumElems, InterfaceNumNodes, InterfaceElemConn, MapNode, LwrBnd, UppBnd, coor)
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)