OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
i25main_free.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| i25main_free ../engine/source/interfaces/intsort/i25main_free.F
25!||--- called by ------------------------------------------------------
26!|| inttri ../engine/source/interfaces/intsort/inttri.F
27!||--- calls -----------------------------------------------------
28!|| i25edge_switch ../engine/source/interfaces/int25/i25edge_switch.F
29!|| i25free_bound ../engine/source/interfaces/int25/i25free_bound.F
30!|| my_barrier ../engine/source/system/machine.F
31!|| spmd_get_stif25_edg ../engine/source/mpi/interfaces/spmd_getstif25_edg.F
32!|| startime ../engine/source/system/timer_mod.F90
33!|| stoptime ../engine/source/system/timer_mod.F90
34!||--- uses -----------------------------------------------------
35!|| intbufdef_mod ../common_source/modules/interfaces/intbufdef_mod.F90
36!|| timer_mod ../engine/source/system/timer_mod.F90
37!|| tri7box ../engine/share/modules/tri7box.F
38!||====================================================================
39 SUBROUTINE i25main_free(TIMERS,
40 1 ITASK, IPARI ,INTBUF_TAB, INTLIST25, ISENDTO,
41 2 IRECVFROM)
42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE timer_mod
46 USE intbufdef_mod
47 USE tri7box
48C-----------------------------------------------
49C I m p l i c i t T y p e s
50C-----------------------------------------------
51#include "implicit_f.inc"
52#include "comlock.inc"
53#include "macro.inc"
54C-----------------------------------------------
55C C o m m o n B l o c k s
56C-----------------------------------------------
57#include "com01_c.inc"
58#include "com04_c.inc"
59#include "param_c.inc"
60#include "timeri_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 TYPE(timer_) :: TIMERS
65 INTEGER IPARI(NPARI,NINTER),ITASK,INTLIST25(*)
66 INTEGER ISENDTO(NSPMD+1,*),IRECVFROM(NSPMD+1,*)
67C REAL
68 TYPE(intbuf_struct_),DIMENSION(NINTER) :: INTBUF_TAB
69C-----------------------------------------------
70C L o c a l V a r i a b l e s
71C-----------------------------------------------
72 INTEGER N, NIN, NRTM, IEDGE, NEDGE
73C REAL
75 . startt, stopt
76C-----------------------------------------------
77 DO n = 1,ninter25
78 nin = intlist25(n)
79
80 nrtm = ipari(4,nin)
81 iedge = ipari(58,nin)
82 nedge = ipari(68,nin)
83C
84 IF(iedge/=0)THEN
85 CALL i25edge_switch(
86 . itask+1,intbuf_tab(nin)%STFM,intbuf_tab(nin)%STFE,intbuf_tab(nin)%MVOISIN,iedge,
87 . nedge,intbuf_tab(nin)%LEDGE)
88C
89 CALL my_barrier
90C
91 END IF
92C
93!$omp single
94 CALL i25free_bound(
95 1 nrtm,intbuf_tab(nin)%MVOISIN,intbuf_tab(nin)%IRECTM,intbuf_tab(nin)%STFM,
96 . intbuf_tab(nin)%NRTM_FREE,
97 2 intbuf_tab(nin)%FREE_IRECT_ID)
98!$OMP END SINGLE
99 END DO
100C-----------------------------------------------------------
101 IF (imon>0 .AND. itask==0) THEN
102 CALL startime(timers,macro_timer_t25stfe)
103 ENDIF
104C
105!$OMP SINGLE
106 DO n = 1,ninter25
107 nin = intlist25(n)
108 IF(ipari(macro_iedge,nin) > 0) THEN
109C
110C Also needed in SMP for resetting STFE !
112 . intbuf_tab(nin)%STFE, ipari(macro_nedge,nin), intbuf_tab(nin)%LEDGE,
113 . nin , isendto, irecvfrom, intbuf_tab(nin)%MPI_COMM, intbuf_tab(nin)%RANK,
114 . intbuf_tab(nin)%NSPMD)
115 ENDIF
116 ENDDO
117!$OMP END SINGLE
118C
119 IF (imon>0 .AND. itask==0) THEN
120 CALL stoptime(timers,macro_timer_t25stfe)
121 ENDIF
122C-----------------------------------------------------------
123 RETURN
124 END
#define my_real
Definition cppsort.cpp:32
subroutine i25edge_switch(jtask, stifm, stfe, mvoisin, iedge, nedge, ledge)
subroutine i25free_bound(nrtm, mvoisin, irect, stifm, nrtm_free, free_irect_id)
subroutine i25main_free(timers, itask, ipari, intbuf_tab, intlist25, isendto, irecvfrom)
subroutine spmd_get_stif25_edg(stfe, nedge, ledge, nin, isendto, ircvfrom, comm, rank, comsize)
subroutine my_barrier
Definition machine.F:31
subroutine startime(event, itask)
Definition timer.F:93
subroutine stoptime(event, itask)
Definition timer.F:135