OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
w_monvol.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "param_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine w_monvol (monvol, lenvolu, nodlocal, len_ia, monvol_l, itab, t_monvol, proc)

Function/Subroutine Documentation

◆ w_monvol()

subroutine w_monvol ( integer, dimension(*) monvol,
integer lenvolu,
integer, dimension(*) nodlocal,
integer len_ia,
integer, dimension(lenvolu) monvol_l,
integer, dimension(*) itab,
type(monvol_struct_), dimension(nvolu), intent(in) t_monvol,
integer, intent(in) proc )

Definition at line 32 of file w_monvol.F.

34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C C o m m o n B l o c k s
40C-----------------------------------------------
41#include "com01_c.inc"
42#include "com04_c.inc"
43#include "param_c.inc"
44C-----------------------------------------------
45C D u m m y A r g u m e n t s
46C-----------------------------------------------
47 INTEGER MONVOL(*), NODLOCAL(*), LENVOLU, LEN_IA,
48 . MONVOL_L(LENVOLU),ITAB(*)
49 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(IN) :: T_MONVOL
50 INTEGER, INTENT(in) :: PROC
51C-----------------------------------------------
52C L o c a l V a r i a b l e s
53C-----------------------------------------------
54 INTEGER ISHIFT, I, J, N, NJ, NJ1, NJ2, NJ3, IADJET, NJET
55 INTEGER :: SIZE_L
56 INTEGER, DIMENSION(NVOLU) :: NTRI,NTRI_LOCAL
57 INTEGER, DIMENSION(:), ALLOCATABLE :: TRI_L
58C
59 ishift = nimv*nvolu+licbag
60c DO I = 1, LENVOLU
61c MONVOL_L(I) = MONVOL(I)
62c END DO
63 DO i = 1, nvolu
64 ntri(i) = t_monvol(i)%NB_FILL_TRI
65 njet = monvol(nimv*(i-1)+8)
66 iadjet = monvol(nimv*(i-1)+9)
67 DO nj = 1, njet
68 nj1 = monvol(ishift+iadjet+(nj-1)*nibjet+5)
69 nj2 = monvol(ishift+iadjet+(nj-1)*nibjet+6)
70 nj3 = monvol(ishift+iadjet+(nj-1)*nibjet+7)
71 IF(nj1/=0)THEN
72 nj1 = nodlocal(nj1)
73 IF(nj1/=0)monvol_l(ishift+iadjet+(nj-1)*nibjet+5)=nj1
74 END IF
75 IF(nj2/=0)THEN
76 nj2 = nodlocal(nj2)
77 IF(nj2/=0)monvol_l(ishift+iadjet+(nj-1)*nibjet+6)=nj2
78 END IF
79 IF(nj3/=0)THEN
80 nj3 = nodlocal(nj3)
81 IF(nj3/=0)monvol_l(ishift+iadjet+(nj-1)*nibjet+7)=nj3
82 END IF
83 END DO
84 END DO
85C
86 CALL write_i_c(monvol_l,lenvolu)
87 len_ia = len_ia + lenvolu
88
89 DO i = 1, nvolu
90 ntri_local(i) = t_monvol(i)%NUMBER_TRI_PER_PROC(proc)
91 ENDDO
92 CALL write_i_c(ntri_local, nvolu)
93 len_ia = len_ia + nvolu
94
95 DO i = 1, nvolu
96 IF (ntri(i) > 0) THEN
97 ALLOCATE(tri_l(3 * ntri(i)))
98 size_l = 0
99 DO j = 1, ntri(i)
100 IF (nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 1)) /= 0 .AND.
101 . nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 2)) /= 0 .AND.
102 . nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 3)) /= 0) THEN
103 size_l = size_l + 3
104 tri_l(3 * (j - 1) + 1) = nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 1))
105 tri_l(3 * (j - 1) + 2) = nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 2))
106 tri_l(3 * (j - 1) + 3) = nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 3))
107 ENDIF
108 ENDDO
109 IF (size_l > 0 ) THEN
110 CALL write_i_c(tri_l(1:size_l), size_l)
111 len_ia = len_ia + size_l
112 ENDIF
113 DEALLOCATE(tri_l)
114 ENDIF
115 ENDDO
116C
117 RETURN
void write_i_c(int *w, int *len)