119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135 USE my_alloc_mod
140
141
142
143#include "implicit_f.inc"
144
145
146
147 INTEGER
148 TYPE (SURF_) , TARGET ,INTENT(INOUT):: IGRSURF(*)
149 TYPE (SET_) , INTENT(INOUT) :: SET
150
151
152
153 LOGICAL LINE_SEG, SURF_SEG
154 INTEGER NSEG
155 CHARACTER MESS*40
156 DATA mess/'SET SURF GROUP DEFINITION '/
157
158
159
160
161
162 surf_seg = .false.
163 line_seg = .false.
164 nseg = 0
165 IF(set%NB_SURF_SEG > 0) THEN
166
167 nseg = set%NB_SURF_SEG
168 surf_seg = .true.
169 ELSEIF(set%NB_LINE_SEG > 0)THEN
170
171 nseg = set%NB_LINE_SEG
172 line_seg = .true.
173 ENDIF
174
175
176 igrs = igrs + 1
177
178 igrsurf(igrs)%ID = set%SET_ID
179 igrsurf(igrs)%TITLE = set%TITLE
180 igrsurf(igrs)%NSEG = nseg
181
182 igrsurf(igrs)%TYPE = 0
183 igrsurf(igrs)%ID_MADYMO = 0
184 igrsurf(igrs)%IAD_BUFR = 0
185 igrsurf(igrs)%NB_MADYMO = 0
186 igrsurf(igrs)%TYPE_MADYMO = 0
187 igrsurf(igrs)%LEVEL = 1
188 igrsurf(igrs)%TH_SURF = 0
189 igrsurf(igrs)%ISH4N3N = 0
190 igrsurf(igrs)%NSEG_R2R_ALL = 0
191 igrsurf(igrs)%NSEG_R2R_SHARE = 0
192
193
194
195 IF (nseg == 0) igrsurf(igrs)%SET_GROUP = 1
196
197
198 IF (nseg > 0) THEN
199
200 IF (ALLOCATED(igrsurf(igrs)%NODES)) DEALLOCATE(igrsurf(igrs)%NODES)
201 IF (ALLOCATED(igrsurf(igrs)%ELTYP)) DEALLOCATE(igrsurf(igrs)%ELTYP)
202 IF (ALLOCATED(igrsurf(igrs)%ELEM)) DEALLOCATE(igrsurf(igrs)%ELEM)
203
204 CALL my_alloc(igrsurf(igrs)%NODES,nseg,4)
205 CALL my_alloc(igrsurf(igrs)%ELTYP,nseg)
206 CALL my_alloc(igrsurf(igrs)%ELEM,nseg)
207
208 IF(surf_seg)THEN
209 igrsurf(igrs)%NODES(1:nseg,1) = set%SURF_NODES(1:nseg,1)
210 igrsurf(igrs)%NODES(1:nseg,2) = set%SURF_NODES(1:nseg,2)
211 igrsurf(igrs)%NODES(1:nseg,3) = set%SURF_NODES(1:nseg,3)
212 igrsurf(igrs)%NODES(1:nseg,4) = set%SURF_NODES(1:nseg,4)
213 igrsurf(igrs)%ELTYP(1:nseg) = set%SURF_ELTYP(1:nseg)
214 igrsurf(igrs)%ELEM(1:nseg) = set%SURF_ELEM(1:nseg)
215 igrsurf(igrs)%EXT_ALL = set%EXT_ALL
216 ENDIF
217
218 IF(line_seg)THEN
219 igrsurf(igrs)%NODES(1:nseg,1) = set%LINE_NODES(1:nseg
220
221 igrsurf(igrs)%NODES(1:nseg,3) = 0
222 igrsurf(igrs)%NODES(1:nseg,4) = 0
223 igrsurf(igrs)%ELTYP(1:nseg) = set%LINE_ELTYP(1:nseg)
224 igrsurf(igrs)%ELEM(1:nseg) = set%LINE_ELEM(1:nseg)
225 ENDIF
226
227 ENDIF
228
229 set%SET_NSURF_ID = igrs
230 set%HAS_SURF_SEG = nseg
231
232
233 RETURN