OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
w_isurf_str.F File Reference
#include "implicit_f.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine w_isurf_str (len_ia, proc, numnod, nsurf, numels, numelq, numelc, numelt, numelp, numelr, nodlocal, scel, cel, ltitr, lenisurf_l, nspmd, igrsurf, igrsurf_proc)

Function/Subroutine Documentation

◆ w_isurf_str()

subroutine w_isurf_str ( integer, intent(inout) len_ia,
integer, intent(in) proc,
integer, intent(in) numnod,
integer, intent(in) nsurf,
integer, intent(in) numels,
integer, intent(in) numelq,
integer, intent(in) numelc,
integer, intent(in) numelt,
integer, intent(in) numelp,
integer, intent(in) numelr,
integer, dimension(numnod), intent(in) nodlocal,
integer, intent(in) scel,
integer, dimension(scel), intent(in) cel,
integer, intent(in) ltitr,
integer, intent(in) lenisurf_l,
integer, intent(in) nspmd,
type (surf_), dimension(nsurf) igrsurf,
type(surf_), dimension(nsurf,nspmd), intent(in) igrsurf_proc )
Parameters
[in,out]len_iasize of the restart
[in]procprocessor id
[in]numnodnumber of node
[in]nsurfnumber of surface
[in]numelsnumber of solid
[in]numelqnumber of quad
[in]numelcnumber of shell
[in]numeltnumber of truss
[in]numelpnumber of beam
[in]numelrnumber of spring
[in]nodlocalarray to convert global node id to local node id
[in]scelsize of CEL
[in]celconnectivity global element id --> local element id
[in]lenisurf_lsize of surface buffer written in the restart
[in]ltitrsize of ititle integer array
[in]nspmdnumber of processor
igrsurfsurface structure, size =NSURF
[in]igrsurf_procsurface structure per proc, size =NSURF*NSPMS

Definition at line 31 of file w_isurf_str.F.

35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE groupdef_mod
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C D u m m y A r g u m e n t s
45C-----------------------------------------------
46 INTEGER, INTENT(INOUT) :: LEN_IA!< size of the restart
47 INTEGER, INTENT(IN) :: PROC !< processor id
48 INTEGER, INTENT(IN) :: NUMNOD !< number of node
49 INTEGER, INTENT(IN) :: NSURF !< number of surface
50 INTEGER, INTENT(IN) :: NUMELS !< number of solid
51 INTEGER, INTENT(IN) :: NUMELQ !< number of quad
52 INTEGER, INTENT(IN) :: NUMELC !< number of shell
53 INTEGER, INTENT(IN) :: NUMELT !< number of truss
54 INTEGER, INTENT(IN) :: NUMELP !< number of beam
55 INTEGER, INTENT(IN) :: NUMELR !< number of spring
56 INTEGER, DIMENSION(NUMNOD), INTENT(IN) :: NODLOCAL !< array to convert global node id to local node id
57 INTEGER, INTENT(IN) :: SCEL !< size of CEL
58 INTEGER, DIMENSION(SCEL), INTENT(IN) :: CEL !< connectivity global element id --> local element id
59 INTEGER, INTENT(IN) :: LENISURF_L !< size of surface buffer written in the restart
60 INTEGER, INTENT(IN) :: LTITR !< size of ititle integer array
61 INTEGER, INTENT(IN) :: NSPMD !< number of processor
62 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF !< surface structure, size =NSURF
63 TYPE(SURF_), DIMENSION(NSURF,NSPMD), INTENT(IN) :: IGRSURF_PROC !< surface structure per proc, size =NSURF*NSPMS
64C-----------------------------------------------
65C L o c a l V a r i a b l e s
66C-----------------------------------------------
67 INTEGER :: ISU,J,K,ERR,NSEG
68 INTEGER :: L_SURF,ID,TYPE,ID_MADYMO,IAD_BUFR
69 INTEGER :: NB_MADYMO,TYPE_MADYMO,LEVEL,TH_SURF,ISH4N3N,NSEG_R2R_ALL
70 INTEGER :: NSEG_R2R_SHARE
71 INTEGER, DIMENSION(LTITR) :: ITITLE
72 INTEGER, DIMENSION(NSURF) :: NSEG_L
73 CHARACTER(LEN=nchartitle) :: TITR
74 INTEGER, ALLOCATABLE, DIMENSION (:) :: IGRSURF_L
75
76 INTEGER :: JJ
77 INTEGER :: NODE_ID,LOCAL_NODE_ID,ELEM,ELTYP
78 INTEGER, DIMENSION(0:7) :: OFFSET ! offset array
79C-----------------------------------------------
80!=======================================================================
81 offset(0:7) = 0
82 offset(1) = 0 ! offset for solid
83 offset(2) = numels ! offset for quad
84 offset(3) = numels+numelq ! offset for shell
85 offset(7) = numels+numelq+ numelc+numelt+numelp+numelr ! offset for triangle
86
87 DO isu=1,nsurf
88 titr = igrsurf(isu)%TITLE
89 CALL fretitl(titr,ititle,ltitr)
90 CALL write_i_c(ititle,ltitr)
91 ENDDO ! DO ISU=1,NSURF
92 len_ia = len_ia + nsurf
93!
94 err = 0
95 ALLOCATE (igrsurf_l(lenisurf_l), stat=err)
96!
97! COUNT LOCAL SEGMENTS "NSEG_L"
98!
99 DO isu=1,nsurf
100 nseg = igrsurf(isu)%NSEG
101 nseg_l(isu) = igrsurf_proc(isu,proc+1)%NSEG
102 ENDDO
103 l_surf = 0
104!
105 DO isu=1,nsurf
106 id = igrsurf(isu)%ID
107 nseg = igrsurf(isu)%NSEG
108 TYPE = igrsurf(isu)%TYPE
109 id_madymo = igrsurf(isu)%ID_MADYMO
110 iad_bufr = igrsurf(isu)%IAD_BUFR
111 nb_madymo = igrsurf(isu)%NB_MADYMO
112 type_madymo = igrsurf(isu)%TYPE_MADYMO
113 level = igrsurf(isu)%LEVEL
114 th_surf = igrsurf(isu)%TH_SURF
115 ish4n3n = igrsurf(isu)%ISH4N3N
116 nseg_r2r_all = igrsurf(isu)%NSEG_R2R_ALL
117 nseg_r2r_share = igrsurf(isu)%NSEG_R2R_SHARE
118!
119! surf storage
120!
121 igrsurf_l(l_surf+1) = id
122 l_surf = l_surf+1
123 igrsurf_l(l_surf+1) = nseg_l(isu)
124 l_surf = l_surf+1
125 igrsurf_l(l_surf+1) = TYPE
126 l_surf = l_surf+1
127 igrsurf_l(l_surf+1) = id_madymo
128 l_surf = l_surf+1
129 igrsurf_l(l_surf+1) = iad_bufr
130 l_surf = l_surf+1
131 igrsurf_l(l_surf+1) = nb_madymo
132 l_surf = l_surf+1
133 igrsurf_l(l_surf+1) = type_madymo
134 l_surf = l_surf+1
135 igrsurf_l(l_surf+1) = level
136 l_surf = l_surf+1
137 igrsurf_l(l_surf+1) = th_surf
138 l_surf = l_surf+1
139 igrsurf_l(l_surf+1) = ish4n3n
140 l_surf = l_surf+1
141 igrsurf_l(l_surf+1) = nseg_r2r_all
142 l_surf = l_surf+1
143 igrsurf_l(l_surf+1) = nseg_r2r_share
144 l_surf = l_surf+1
145 DO jj=1,igrsurf_proc(isu,proc+1)%NSEG
146 j = igrsurf_proc(isu,proc+1)%LOCAL_SEG(jj)
147 DO k=1,4
148 node_id = igrsurf(isu)%NODES(j,k)
149 IF(node_id/=0) THEN
150 local_node_id = nodlocal(node_id)
151 ELSE
152 local_node_id = 0
153 ENDIF
154 igrsurf_l(l_surf+1) = local_node_id
155 l_surf = l_surf+1
156 ENDDO
157 eltyp = igrsurf_proc(isu,proc+1)%ELTYP(jj)
158 elem = igrsurf_proc(isu,proc+1)%ELEM(jj) + offset(eltyp)
159 IF(elem/=0) elem = cel(elem)
160 igrsurf_l(l_surf+1) = eltyp
161 l_surf = l_surf+1
162 igrsurf_l(l_surf+1) = elem
163 l_surf = l_surf+1
164 ENDDO
165 ENDDO
166!---------
167 CALL write_i_c(igrsurf_l,l_surf)
168!---------
169 DEALLOCATE (igrsurf_l)
170!---------
171 len_ia = len_ia + l_surf
172!---------
173 RETURN
initmumps id
subroutine fretitl(titr, iasc, l)
Definition freform.F:620
void write_i_c(int *w, int *len)