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

Go to the source code of this file.

Functions/Subroutines

subroutine i11trivox1 (irects, irectm, x, nrtm, xyzm, ii_stok, cand_s, cand_m, nsn, noint, tzinf, i_mem, addcm, iadfin, chaine, nrts, itab, multimp, iauto, voxel, nbx, nby, nbz, gapmin, drad, marge, gap_s, gap_m, gap_s_l, gap_m_l, igap, flagremnode, kremnode, remnode, dgapload)
subroutine i11resetvoxel1 (tmin, tmax, nbx, nby, nbz, voxel)

Function/Subroutine Documentation

◆ i11resetvoxel1()

subroutine i11resetvoxel1 ( integer, dimension(3), intent(in) tmin,
integer, dimension(3), intent(in) tmax,
integer, intent(in) nbx,
integer, intent(in) nby,
integer, intent(in) nbz,
integer, dimension(1:nbx+2,1:nby+2,1:nbz+2), intent(inout) voxel )

Definition at line 528 of file i11trivox1.F.

531C============================================================================
532C M o d u l e s
533C-----------------------------------------------
534 USE tri7box
535C-----------------------------------------------
536C I m p l i c i t T y p e s
537C-----------------------------------------------
538#include "implicit_f.inc"
539C-----------------------------------------------
540C D u m m y A r g u m e n t s
541C-----------------------------------------------
542 INTEGER, intent(in) :: tMIN(3), tMAX(3),
543 . NBX, NBY, NBZ
544
545 INTEGER, INTENT(INOUT) ::
546 . VOXEL(1:NBX+2,1:NBY+2,1:NBZ+2)
547C-----------------------------------------------
548C L o c a l V a r i a b l e s
549C-----------------------------------------------
550 INTEGER I,J,K,Z_FIRST,Z_LAST,SIZE
551C-----------------------------------------------
552C S o u r c e L i n e s
553C--------------------------------------------
554
555 SIZE = tmax(3) - tmin(3) +1
556 z_first = tmin(3)
557 z_last = SIZE + tmin(3)-1
558
559 DO k= z_first , z_last
560 DO j= tmin(2),tmax(2)
561 DO i= tmin(1),tmax(1)
562 voxel(i,j,k) = 0
563 END DO
564 END DO
565 END DO
566
567 RETURN
568

◆ i11trivox1()

subroutine i11trivox1 ( integer, dimension(2,nrts) irects,
integer, dimension(2,nrtm) irectm,
dimension(3,*), intent(in) x,
integer nrtm,
dimension(6,*), intent(in) xyzm,
integer, intent(inout) ii_stok,
integer, dimension(*), intent(inout) cand_s,
integer, dimension(*), intent(inout) cand_m,
integer nsn,
integer noint,
intent(in) tzinf,
integer, intent(inout) i_mem,
integer, dimension(*), intent(inout) addcm,
integer iadfin,
integer, dimension(2,*), intent(inout) chaine,
integer nrts,
integer, dimension(*) itab,
integer multimp,
integer iauto,
integer, dimension(1:nbx+2,1:nby+2,1:nbz+2), intent(inout) voxel,
integer nbx,
integer nby,
integer nbz,
intent(in) gapmin,
intent(in) drad,
intent(in) marge,
dimension(*), intent(in) gap_s,
dimension(*), intent(in) gap_m,
dimension(*), intent(in) gap_s_l,
dimension(*), intent(in) gap_m_l,
integer igap,
integer flagremnode,
integer, dimension(*), intent(inout) kremnode,
integer, dimension(*), intent(inout) remnode,
intent(in) dgapload )

Definition at line 36 of file i11trivox1.F.

45C============================================================================
46C M o d u l e s
47C-----------------------------------------------
48 USE realloc_mod
49 USE tri7box
50 USE tri11
51C-----------------------------------------------
52C I m p l i c i t T y p e s
53C-----------------------------------------------
54#include "implicit_f.inc"
55C-----------------------------------------------
56C G l o b a l P a r a m e t e r s
57C-----------------------------------------------
58#include "mvsiz_p.inc"
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62#include "param_c.inc"
63C-----------------------------------------------
64C M e s s a g e P a s s i n g
65C-----------------------------------------------
66!-----------------------------------------------
67! SUBROUTINE AIM
68! ==============
69! VOXEL SEARCH to find couple (edge,edge) with penetration among all possible couples defined by second and main side.
70! Temporary found candidate are written in Temporary array PROV_S and PROV_M in order to optimise OpenMP performances.
71! There is no order.
72! PROV_S(i),PROV_M(i) : is a potential candidate couple because edges are geometrically near each other.
73! I11STO subroutine will compute if penetration is positive and if couple was not already stoked, in this case, candidate is stoked in CAND(S(i), CAND_M(i)
74!
75C-----------------------------------------------
76C D u m m y A r g u m e n t s
77C
78C NOM DESCRIPTION E/S
79C
80C ADD(2,*) ARRAY OF ADRESSES E/S
81C 1.........ADRESSES NODES C 2.........ADRESSES ELEMENTS
82C ZYZM(6,*) ARRAY OF XYZMIN E/S
83C 1.........XMIN BOITE
84C 2.........YMIN BOITE
85C 3.........ZMIN BOITE
86C 4.........XMAX BOITE
87C 5.........YMAX BOITE
88C 6.........ZMAX BOITE
89C IRECTM(2,*) ARRAY OF CONEC E
90C 1.........NODE 1 main EDGE
91C 2.........NODE 2 main EDGE
92C IRECTS(2,*) ARRAY OF CONEC E
93C 1.........NODE 1 SECOND EDGE
94C 2.........NODE 2 SECOND EDGE
95C X(3,*) COORDONNEES NODALES E
96C ii_stok storage level of the pairs
97C CANDIDATES impact E/S
98C CAND_S boites resultats nodes C CAND_M adresses des boites resultat elements
99C NOINT INTERFACE USER NUMBER
100C TZINF TAILLE ZONE INFLUENCE
101C VOXEL(*,*,*) VOXEL PARTIONNEMENT DE l'ESPACE (NBX+2,NBY+2,NBZ+2)
102C stores in each voxel the secondary edges
103C In practice designe the first stop on a chain list
104C max_add maximum address for the chain arrays
105C nsn current maximum allowed size for the
106C COUPLES NODES,ELT CANDIDATES
107C-----------------------------------------------
108C D u m m y A r g u m e n t s
109C-----------------------------------------------
110 INTEGER ::
111 . NRTM,NRTS,MULTIMP,IADFIN,IGAP,
112 . NSN,NOINT,ITAB(*),NBX,NBY,NBZ,IAUTO,
113 . IRECTS(2,NRTS),IRECTM(2,NRTM),FLAGREMNODE
114 INTEGER ITASK
115 INTEGER, INTENT(INOUT) ::
116 . CAND_S(*),CAND_M(*),ADDCM(*),CHAINE(2,*),
117 . VOXEL(1:NBX+2,1:NBY+2,1:NBZ+2), I_MEM,II_STOK,
118 . KREMNODE(*),REMNODE(*)
119 my_real
120 . ,INTENT(IN) ::
121 . x(3,*),xyzm(6,*),
122 . gapmin, drad, marge, tzinf, dgapload,
123 . gap_s(*), gap_m(*), gap_s_l(*), gap_m_l(*)
124C-----------------------------------------------
125C L o c a l V a r i a b l e s
126C-----------------------------------------------
127 INTEGER
128 . I,J,SS1,SS2,IBUG,
129 . N1,N2,MM1,MM2, iN1, iN2, iM1, iM2, K,L,
130 . PROV_S(2*MVSIZ),PROV_M(2*MVSIZ), !Provisional table of candidates sent to i11stok
131 . IX1,IY1,IZ1,IX2,IY2,IZ2,
132 . IX,IY,IZ, FIRST_ADD,
133 . I_STOK, I_STOK_BAK, IEDG,
134 . PREV_ADD, CHAIN_ADD, CURRENT_ADD, !for scanning the chain arrays
135 . NEDG, DEJA , MAX_ADD ,II_STOK0, M
136 my_real
137 . xx1, xx2,
138 . xmin, xmax,ymin, ymax,zmin, zmax,
139 . yy1,yy2,zz1,zz2,
140 . aaa, dd,
141 . xminb,yminb,zminb,xmaxb,ymaxb,zmaxb
142 my_real, dimension(:), ALLOCATABLE :: xmax_edgs, xmin_edgs, ymax_edgs, ymin_edgs, zmax_edgs, zmin_edgs
143 my_real, dimension(:), ALLOCATABLE :: xmax_edgm, xmin_edgm, ymax_edgm, ymin_edgm, zmax_edgm, zmin_edgm
144 INTEGER, DIMENSION(:), ALLOCATABLE :: TAGREMLINE
145C-----------------------------------------------C
146 ALLOCATE(xmax_edgs(nrts), xmin_edgs(nrts), ymax_edgs(nrts))
147 ALLOCATE(ymin_edgs(nrts), zmax_edgs(nrts), zmin_edgs(nrts))
148 ALLOCATE(xmax_edgm(nrtm), xmin_edgm(nrtm), ymax_edgm(nrtm))
149 ALLOCATE(ymin_edgm(nrtm), zmax_edgm(nrtm), zmin_edgm(nrtm))
150C--- IREMGAP - array for tag of deactivated lines
151 IF(flagremnode==2)THEN
152 ALLOCATE(tagremline(nrts))
153 tagremline(1:nrts) = 0
154 ENDIF
155C
156 aaa = zero
157 !warning: can be optimized
158 min_ix=nbx+2
159 min_iy=nby+2
160 min_iz=nbz+2
161 max_ix=1
162 max_iy=1
163 max_iz=1
164
165 !---------------------------------------------------------!
166 ! allocation of the chain arrays
167 !---------------------------------------------------------!
168 max_add = max(1,4*(nrts))
169 ALLOCATE(lchain_elem(1:max_add))
170 ALLOCATE(lchain_next(1:max_add))
171 ALLOCATE(lchain_last(1:max_add))
172
173
174 IF(nrtm==0.OR.nrts==0)THEN
175 !Do not reinitize all the Voxel if there is no candidate
176 min_ix=1
177 min_iy=1
178 min_iz=1
179 END IF
180
181 !---------------------------------------------------------!
182 ! retrieving the domain boundaries
183 !---------------------------------------------------------!
184 xmin = xyzm(1,1)
185 ymin = xyzm(2,1)
186 zmin = xyzm(3,1)
187 xmax = xyzm(4,1)
188 ymax = xyzm(5,1)
189 zmax = xyzm(6,1)
190c Dev Future: xminb larger than Xmin ...
191 xminb = xmin
192 yminb = ymin
193 zminb = zmin
194 xmaxb = xmax
195 ymaxb = ymax
196 zmaxb = zmax
197
198C=======================================================================
199C 1 for each edge, mark the occupied voxels.
200C the number of edges in a voxel being variable,
201C a chain array is used.
202C these voxels represent the neighborhood of the edge.
203C We then look for all the entities interfaces
204C in this neighborhood.
205C=======================================================================
206
207 current_add=1 ! first address
208
209 DO i = 1,nrts !si besoin on peut inverser Main/Secnd
210
211c If (Stfs (i) == Zero) Cycle! We do not retain the Destri facets
212
213 !-------------------------------------------!
214 ! Nodes ID for edge (N1,N2) !
215 !-------------------------------------------!
216 n1=irects(1,i)
217 n2=irects(2,i)
218 !-------------------------------------------!
219 ! Coordinates of the two nodes !
220 ! +optimization // search for the nodes
221 !included in xmin xmax of the elements of the processor!
222 !-------------------------------------------!
223 xx1=x(1,n1)
224 xx2=x(1,n2)
225 xmax_edgs(i)=max(xx1,xx2); IF(xmax_edgs(i) < xmin) cycle
226 xmin_edgs(i)=min(xx1,xx2); IF(xmin_edgs(i) > xmax) cycle
227 yy1=x(2,n1)
228 yy2=x(2,n2)
229 ymax_edgs(i)=max(yy1,yy2); IF(ymax_edgs(i) < ymin) cycle
230 ymin_edgs(i)=min(yy1,yy2); IF(ymin_edgs(i) > ymax) cycle
231 zz1=x(3,n1)
232 zz2=x(3,n2)
233 zmax_edgs(i)=max(zz1,zz2); IF(zmax_edgs(i) < zmin) cycle
234 zmin_edgs(i)=min(zz1,zz2); IF(zmin_edgs(i) > zmax) cycle
235
236 !-------------------------------------------!
237 ! VOXEL OCCUPIED BY THE EDGE !
238 !-------------------------------------------!
239 !Voxel_lower_left_bound for this edge
240 ix1=int(nbx*(xmin_edgs(i)-xminb)/(xmaxb-xminb))
241 iy1=int(nby*(ymin_edgs(i)-yminb)/(ymaxb-yminb))
242 iz1=int(nbz*(zmin_edgs(i)-zminb)/(zmaxb-zminb))
243 ix1=max(1,2+min(nbx,ix1))
244 iy1=max(1,2+min(nby,iy1))
245 iz1=max(1,2+min(nbz,iz1))
246 !Voxel_upper_right_bound for this edge
247 ix2=int(nbx*(xmax_edgs(i)-xminb)/(xmaxb-xminb))
248 iy2=int(nby*(ymax_edgs(i)-yminb)/(ymaxb-yminb))
249 iz2=int(nbz*(zmax_edgs(i)-zminb)/(zmaxb-zminb))
250 ix2=max(1,2+min(nbx,ix2))
251 iy2=max(1,2+min(nby,iy2))
252 iz2=max(1,2+min(nbz,iz2))
253
254 !for voxel reset
255 min_ix = min(min_ix,ix1)
256 min_iy = min(min_iy,iy1)
257 min_iz = min(min_iz,iz1)
258 max_ix = max(max_ix,ix2)
259 max_iy = max(max_iy,iy2)
260 max_iz = max(max_iz,iz2)
261
262 !----------------------------------------------!
263 ! EDGE STORAGE FOR EACH VOXEL (CHAINED ARRAY) !
264 !----------------------------------------------!
265C
266C VOXEL(i,j,k) LCHAIN_LAST(FIRST)
267C +-----------+------------+
268C | =>FIRST | =>LAST |
269C +--+--------+--+---------+
270C | |
271C | |
272C | |
273C | | LCHAIN_ELEM(*) LCHAIN_NEXT(*)
274C | | +------------+-----------+
275C +-------------->| edge_id | iadd 3 | 1:FIRST --+
276C | +------------+-----------+ |
277C | | | | 2 |
278C | +------------+-----------+ |
279C | | edge_id | iadd 4 | 3 <-------+
280C | +------------+-----------+ |
281C | | edge_id | iadd 6 | 4 <-------+
282C | +------------+-----------+ |
283C | | | | 5 |
284C | +------------+-----------+ |
285C +-->| edge_id | 0 | 6:LAST <--+
286C +------------+-----------+
287C | | | MAX_ADD
288C +------------+-----------+
289C
290 !for all voxels occupied by the brick
291 DO iz = iz1,iz2
292 DO iy = iy1,iy2
293 DO ix = ix1,ix2
294
295 first_add = voxel(ix,iy,iz)
296
297 IF(first_add == 0)THEN
298 !voxel encore vide
299 voxel(ix,iy,iz) = current_add ! address in the chain array of the first edge found occupying the voxel
300 lchain_last(current_add) = current_add ! Last = Address for Current Edge
301 lchain_elem(current_add) = i ! edge ID
302 lchain_next(current_add) = 0 ! no next one because last in the list
303 ELSE
304 !voxel contenant deja une edge
305 prev_add = lchain_last(first_add) ! becomes the penultimate
306 lchain_last(first_add) = current_add ! update of the last one
307 lchain_elem(current_add) = i ! edge ID
308 lchain_next(prev_add) = current_add ! maj du suivant 0 -> CURRENT_ADD
309 lchain_next(current_add) = 0 ! no next one because last in the list
310 ENDIF
311
312 current_add = current_add+1
313
314 IF( current_add>=max_add)THEN
315 !Optimization: DEALLOCATE/GOTO DEBUT SUPRRESION.
316 !REALLOCATE SI PAS ASSEZ DE PLACE : inutile de recommencer de 1 a MAX_ADD-1, on poursuit de MAX_ADD a 2*MAX_ADD
317 max_add = 2 * max_add
318 !print *, "reallocate"
322 ENDIF
323
324 ENDDO !IX
325 ENDDO !IY
326 ENDDO !IZ
327
328 ENDDO !DO I=1,NRTS
329
330
331C=======================================================================
332C 3 from the voxels occupied by a main edge, we are able
333C to know all the secondary edges in this neighborhood.
334C this makes it possible to create candidate pairs for contact
335C if the penetration is positive.
336C=======================================================================
337 nedg = 0
338 i_stok = 0
339
340 DO iedg=1,nrtm
341
342 aaa = zero !MARGE
343
344 !-------------------------------------------!
345 ! (N1,N2) is the current main edge !
346 !-------------------------------------------!
347 n1 = irectm(1,iedg)
348 n2 = irectm(2,iedg)
349 mm1 = itab(n1)
350 mm2 = itab(n2)
351
352 !-------------------------------------------!
353 ! X-coordinates of the four nodes !
354 !-------------------------------------------!
355 xx1=x(1,n1)
356 xx2=x(1,n2)
357 xmax_edgm(iedg)=max(xx1,xx2)+tzinf
358 xmin_edgm(iedg)=min(xx1,xx2)-tzinf
359 yy1=x(2,n1)
360 yy2=x(2,n2)
361 ymax_edgm(iedg)=max(yy1,yy2)+tzinf
362 ymin_edgm(iedg)=min(yy1,yy2)-tzinf
363 zz1=x(3,n1)
364 zz2=x(3,n2)
365 zmax_edgm(iedg)=max(zz1,zz2)+tzinf
366 zmin_edgm(iedg)=min(zz1,zz2)-tzinf
367
368 !-------------------------------------------!
369 ! VOXEL OCCUPIED BY THE BRICK !
370 !-------------------------------------------!
371 !Voxel_lower_left_bound for this element---+
372 ix1=int(nbx*(xmin_edgm(iedg)-aaa-xminb)/(xmaxb-xminb))
373 iy1=int(nby*(ymin_edgm(iedg)-aaa-yminb)/(ymaxb-yminb))
374 iz1=int(nbz*(zmin_edgm(iedg)-aaa-zminb)/(zmaxb-zminb))
375 ix1=max(1,2+min(nbx,ix1))
376 iy1=max(1,2+min(nby,iy1))
377 iz1=max(1,2+min(nbz,iz1))
378 !Voxel_upper_right_bound for this element---+
379 ix2=int(nbx*(xmax_edgm(iedg)+aaa-xminb)/(xmaxb-xminb))
380 iy2=int(nby*(ymax_edgm(iedg)+aaa-yminb)/(ymaxb-yminb))
381 iz2=int(nbz*(zmax_edgm(iedg)+aaa-zminb)/(zmaxb-zminb))
382 ix2=max(1,2+min(nbx,ix2))
383 iy2=max(1,2+min(nby,iy2))
384 iz2=max(1,2+min(nbz,iz2))
385
386 deja = 0 ! Not already candidate
387 i_stok_bak = i_stok
388
389C--- IREMGAP - tag of deactivated lines
390 IF(flagremnode==2)THEN
391 k = kremnode(iedg)
392 l = kremnode(iedg+1)-1
393 DO m=k,l
394 tagremline(remnode(m)) = 1
395 ENDDO
396 ENDIF
397C
398 !we go through again the secondary edges in the neighborhood of the main edge iedg
399
400 DO iz = iz1,iz2
401 DO iy = iy1,iy2
402 DO ix = ix1,ix2
403
404 chain_add = voxel(ix,iy,iz) !address in the chain array of the first edge stored in the voxel
405 DO WHILE(chain_add /= 0) ! loop on the edges of the current voxel
406 i = lchain_elem(chain_add) ! numbers of edge_id swept in the current voxel
407
408 !Second Edge Nodes, exclude couples with common node
409 ss1=itab(irects(1,i))
410 ss2=itab(irects(2,i))
411
412 IF( (ss1==mm1).OR.(ss1==mm2).OR.
413 . (ss2==mm1).OR.(ss2==mm2) )THEN
414 chain_add = lchain_next(chain_add)
415 cycle
416 END IF
417
418 !Uniqueness of Peirs
419 IF(iauto==1 .AND. mm1<ss1 )THEN
420 chain_add = lchain_next(chain_add)
421 cycle
422 END IF
423
424C IREMPGAP - Tagged lines are removed
425 IF(flagremnode==2)THEN
426 IF(tagremline(i)==1) THEN
427 chain_add = lchain_next(chain_add)
428 cycle
429 ENDIF
430 ENDIF
431
432 i_stok = i_stok + 1 ! we get a candidate
433 prov_s(i_stok) = i !edge secnd
434 prov_m(i_stok) = iedg !edge main
435
436 IF(deja==0) nedg = nedg + 1
437 deja=1 !the main edge IEDG is subject to a candidate write. We count the main edges that are subject to a candidate pair: we must no longer increment NEDG for the other secondary edges tested.
438 chain_add = lchain_next(chain_add)
439C-----------------------------------------------------
440 IF(i_stok>=nvsiz)THEN
441 CALL i11sto_vox1(
442 1 nvsiz,irects,irectm,x ,ii_stok ,
443 2 cand_s,cand_m,nsn ,noint ,marge ,
444 3 i_mem ,prov_s,prov_m,multimp,addcm ,
445 4 chaine,iadfin,gapmin,drad ,igap ,
446 5 gap_s ,gap_m ,gap_s_l,gap_m_l,dgapload)
447
448 IF(i_mem==2) THEN
449 ii_stok=zero
450 GOTO 1000
451 END if!(I_MEM==2)
452 i_stok = i_stok-nvsiz
453 DO j=1,i_stok
454 prov_s(j) = prov_s(j+nvsiz)
455 prov_m(j) = prov_m(j+nvsiz)
456 ENDDO
457 ENDIF
458C-----------------------------------------------------
459
460 ENDDO !NEXT WHILE(CHAIN_ADD /= 0)
461 ENDDO !NEXT IZ
462 ENDDO !NEXT IY
463 ENDDO !NEXT IZ
464
465C--- IREMGAP - clean of tagremline
466 IF(flagremnode==2)THEN
467 k = kremnode(iedg)
468 l = kremnode(iedg+1)-1
469 DO m=k,l
470 tagremline(remnode(m)) = 0
471 ENDDO
472 ENDIF
473
474 ENDDO !NEXT IEDG
475
476
477C-------------------------------------------------------------------------
478C end of sorting
479C-------------------------------------------------------------------------
480
481 IF(i_stok/=0)CALL i11sto_vox1(
482 1 i_stok,irects,irectm,x ,ii_stok,
483 2 cand_s,cand_m,nsn ,noint ,marge ,
484 3 i_mem ,prov_s,prov_m,multimp,addcm ,
485 4 chaine,iadfin,gapmin,drad ,igap ,
486 5 gap_s ,gap_m ,gap_s_l,gap_m_l,dgapload)
487
488
489c WRITE(6,*) __FILE__,__LINE__,I_STOK,II_STOK
490C=======================================================================
491C 4 resetting nodes in boxes and deallocation
492C=======================================================================
493
494 1000 CONTINUE
495
496
497
498 ! can be optimized: do not reset the whole table (several possible solutions)
499 !! VOXEL( MIN_IX:MAX_IX, MIN_IY:MAX_IY, MIN_IZ:MAX_IZ ) = 0
500
501 CALL i11resetvoxel1(
502 1 (/min_ix, min_iy, min_iz/),
503 . (/max_ix, max_iy, max_iz/),
504 2 nbx, nby, nbz, voxel )
505
506 DEALLOCATE(lchain_next)
507 DEALLOCATE(lchain_elem)
508 DEALLOCATE(lchain_last)
509 IF(flagremnode==2) DEALLOCATE(tagremline)
510
511 DEALLOCATE(xmax_edgs, xmin_edgs, ymax_edgs)
512 DEALLOCATE(ymin_edgs, zmax_edgs, zmin_edgs)
513 DEALLOCATE(xmax_edgm, xmin_edgm, ymax_edgm)
514 DEALLOCATE(ymin_edgm, zmax_edgm, zmin_edgm)
515
516 RETURN
#define my_real
Definition cppsort.cpp:32
if(complex_arithmetic) id
subroutine i11resetvoxel1(tmin, tmax, nbx, nby, nbz, voxel)
Definition i11trivox1.F:531
subroutine ymax(idn, fac, npc, pld, stiffmin, stiffmax, stiffini, stiffavg)
Definition law100_upd.F:274
#define min(a, b)
Definition macros.h:20
#define max(a, b)
Definition macros.h:21
integer function, dimension(:), pointer ireallocate(ptr, new_size)
Definition realloc_mod.F:39
integer, dimension(:), pointer lchain_elem
Definition tri11_mod.F:37
integer max_iz
Definition tri11_mod.F:33
integer min_ix
Definition tri11_mod.F:33
integer, dimension(:), pointer lchain_last
Definition tri11_mod.F:39
integer min_iz
Definition tri11_mod.F:33
integer min_iy
Definition tri11_mod.F:33
integer, dimension(:), pointer lchain_next
Definition tri11_mod.F:38
integer max_iy
Definition tri11_mod.F:33
integer max_ix
Definition tri11_mod.F:33
subroutine i11sto_vox1(j_stok, irects, irectm, x, ii_stok, cand_n, cand_e, nsn, noint, marge, i_mem, prov_n, prov_e, multimp, addcm, chaine, iadfin, gapmin, drad, igap, gap_s, gap_m, gap_s_l, gap_m_l, dgapload)
Definition i11sto.F:36