46 use element_mod ,
only : nixs,nixq,nixtg
50#include "implicit_f.inc"
63 INTEGER,
INTENT(IN) :: ITASK, IPARG(NPARG, *), IXS(NIXS, *), IXQ(NIXQ, *), IXTG(NIXTG, *)
64 my_real,
INTENT(IN) :: xgrid(3, *), wgrid(3, *)
65 TYPE(multi_fvm_struct),
INTENT(INOUT) :: MULTI_FVM
69 INTEGER :: NG, MTN, NEL, ITY, ISOLNOD, NFT, JALE
70 LOGICAL :: COMPUTE_CENTROID
72 compute_centroid = (multi_fvm%MUSCL > 0) .OR. multi_fvm%NS_DIFF
74 DO ng = itask + 1, ngroup, nthread
81 isolnod = iparg(28, ng)
84 IF (isolnod == 4)
THEN
86 CALL snorm3t(nel, nft, jale, ixs, xgrid, wgrid,
87 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:6, 1 + nft : nel + nft),
88 . multi_fvm%FACE_DATA%WFAC(1:3, 1:6, 1 + nft : nel + nft),
89 . multi_fvm%FACE_DATA%SURF(1:6, 1 + nft : nel + nft))
90 IF (compute_centroid)
THEN
91 CALL centroid3t(nel, multi_fvm%NELEM, nft, ixs, xgrid,
92 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
93 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
97 CALL snorm3(nel, nft, jale, ixs, xgrid, wgrid,
98 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:6, 1 + nft : nel + nft),
99 . multi_fvm%FACE_DATA%WFAC(1:3, 1:6, 1
100 . multi_fvm%FACE_DATA%SURF(1:6, 1 + nft : nel + nft))
102 IF (compute_centroid)
THEN
103 CALL centroid3(nel, multi_fvm%NELEM, nft, ixs, xgrid,
104 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
105 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
108 ELSE IF (ity == 2)
THEN
110 CALL qnorm2(nel, nft, jale, multi_fvm%SYM, ixq, xgrid, wgrid,
111 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:4, 1 + nft : nel + nft),
112 . multi_fvm%FACE_DATA%WFAC(1:3, 1:4, 1 + nft : nel + nft),
113 . multi_fvm%FACE_DATA%SURF(1:4, 1 + nft : nel + nft))
114 IF (compute_centroid)
THEN
116 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
117 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))
119 ELSE IF (ity == 7)
THEN
121 CALL qnorm2t(nel, nft, jale, multi_fvm%SYM, ixtg, xgrid, wgrid,
122 . multi_fvm%FACE_DATA%NORMAL(1:3, 1:3, 1 + nft : nel + nft),
123 . multi_fvm%FACE_DATA%WFAC(1:3, 1:3, 1 + nft : nel + nft),
124 . multi_fvm%FACE_DATA%SURF(1:3, 1 + nft : nel + nft))
125 IF (compute_centroid)
THEN
126 CALL centroid2t(nel, multi_fvm%NELEM, nft, ixtg, xgrid,
127 . multi_fvm%ELEM_DATA%CENTROID(:, 1 + nft : nel + nft),
128 . multi_fvm%FACE_DATA%CENTROID(:, :, 1 + nft : nel + nft))