47
48
49
50
51
52
53
54
55
57 USE multi_fvm_mod
60 USE intbufdef_mod
63 USE sensor_mod
64 USE glob_therm_mod
65 USE timer_mod
66
67
68
69#include "implicit_f.inc"
70
71
72
73#include "com01_c.inc"
74#include "com04_c.inc"
75#include "com08_c.inc"
76#include "param_c.inc"
77#include "task_c.inc"
78#include "timeri_c.inc"
79
80
81
82 TYPE(TIMER_), INTENT(inout) :: TIMERS
83 INTEGER, INTENT(in) :: ITASK
84 INTEGER, INTENT(in) :: NB_INTER_SORTED
85 INTEGER, INTENT(in) :: NSENSOR
86 INTEGER, DIMENSION(NB_INTER_SORTED), INTENT(in) :: LIST_INTER_SORTED
87 INTEGER, INTENT(inout) :: RETRI
88 INTEGER, DIMENSION(NPARI,NINTER), INTENT(inout) :: IPARI
89 INTEGER, DIMENSION(NINTER+1,NSPMD+1), INTENT(in) :: ISENDTO,IRECVFROM
90 TYPE(INTBUF_STRUCT_),DIMENSION(NINTER), INTENT(inout) :: INTBUF_TAB
91 my_real,
DIMENSION(3,NUMNOD),
INTENT(in),
TARGET :: x
92 INTEGER, DIMENSION(NUMNOD), INTENT(in) ::
93 INTEGER, INTENT(in) :: RENUM_SIZ
94 INTEGER, DIMENSION(RENUM_SIZ), INTENT(inout) :: RENUM
95 INTEGER, DIMENSION(NSPMD), INTENT(inout) :: NSNFIOLD
96 TYPE(MULTI_FVM_STRUCT), INTENT(INOUT), TARGET :: MULTI_FVM
97 TYPE(H3D_DATABASE) :: H3D_DATA
98 TYPE(inter_struct_type), DIMENSION(NINTER), INTENT(inout) :: INTER_STRUCT
99 TYPE(sorting_comm_type), DIMENSION(NINTER), INTENT(inout) :: SORT_COMM
100 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
101 type (glob_therm_) ,INTENT(IN) :: GLOB_THERM
102
103
104
105 INTEGER :: KK,N,ESHIFT
106 INTEGER :: NTY,INACTI,ISENS
107 INTEGER :: NRTM_T
108 LOGICAL :: TYPE18
110
111
112 DO kk=1,nb_inter_sorted
113 n = list_inter_sorted(kk)
114 nty = ipari(7,n)
115 inacti = ipari(22,n)
116 type18=.false.
117 IF(nty==7.AND.inacti==7)type18=.true.
118
119
120
121 IF( imonm > 0 .AND. itask ==0 ) THEN
122 intbuf_tab(n)%METRIC%NOINT = ipari(15,n)
123 intbuf_tab(n)%METRIC%NCONT = ipari(18,n)
124 intbuf_tab(n)%METRIC%MULTIMP = ipari(23,n)
125 intbuf_tab(n)%METRIC%NSNR =
max(intbuf_tab(n)%METRIC%NSNR , ipari(24,n))
126 intbuf_tab(n)%METRIC%NSN = ipari(5,n)
128 ENDIF
129
130
131 isens = 0
132 IF(nty == 7.OR.nty == 11.OR.nty == 24.OR.nty == 25) isens = ipari(64,n)
133
134
135 IF (isens > 0) THEN
136 ts = sensor_tab(isens)%TSTART
137 ELSE
138 ts = tt
139 ENDIF
140
141
142
143 IF((nty==7.AND.ttTHEN
145 nrtm_t
146 eshift = 0
147 ELSE
148 nrtm_t = ipari(4,n)/nthread
149 eshift = itask*nrtm_t
150 IF(itask==nthread-1)nrtm_t=ipari(4,n)-(nthread-1)*nrtm_t
151 ENDIF
153 1 irecvfrom,retri,itab,nrtm_t,renum,
renum_siz,
154 2 nsnfiold,eshift,multi_fvm,intbuf_tab(n),h3d_data,
155 3 inter_struct,sort_comm,glob_therm%INTHEAT, glob_therm%IDT_THERM, glob_therm%NODADT_THERM)
156 ENDIF
157
158
159
160
161 IF(imonm > 0) THEN
163 ENDIF
164
165 ENDDO
166
167 RETURN
subroutine inter_sort_07(timers, ipari, x, nin, itask, isendto, ircvfrom, retri, itab, nrtm_t, renum, renum_siz, nsnfiold, eshift, multi_fvm, intbuf_tab, h3d_data, inter_struct, sort_comm, intheat, idt_therm, nodadt_therm)
integer, parameter i_main_tri
subroutine renum_siz(ipari, rnum_siz)
subroutine int_stoptime(this, event)
subroutine int_startime(this, event)