48
49
50
51
52
53 USE my_alloc_mod
60 use element_mod , only : nixs,nixq
61
62
63
64#include "implicit_f.inc"
65
66
67
68#include "com04_c.inc"
69#include "units_c.inc"
70#include "scr17_c.inc"
71#include "param_c.inc"
72
73
74
75 TYPE (UNIT_TYPE_),INTENT(IN) ::UNITAB
76 INTEGER IFI,MFI,IDDLEVEL
77 INTEGER NPRW(*), LPRW(*), ITAB(*), ITABM1(*),IXS(NIXS,*),
78 . IXQ(NIXQ,*), NPC(*), IKINE(*),
79 . IMERGE(*),
80 . IKINE1LAG(*),ITAGND(*)
81 TYPE(SUBMODEL_DATA) LSUBMODEL(*)
82
84 . rwl(nrwlp,*), ms(*), v(3,*), x(3,*),
85 . rtrans(ntransf,*)
86 INTEGER NOM_OPT(LNOPT1,*)
87 INTEGER, INTENT (INOUT) :: LNSPEN
88
89 TYPE (GROUP_) ,TARGET, DIMENSION(NGRNOD) :: IGRNOD
90
91
92
93 INTEGER,DIMENSION(:),ALLOCATABLE :: IKINE1
94 INTEGER K,I,NCHPLAN,NCHCYL,NCHSPHER,NCHPARAL,
95 . OFFS,NCHLAGM,NCHTHERM,N,NSL,IPEN
97 . bid
98 CHARACTER MESS*40
99
100
101
102 DATA mess/'STANDARD RIGID WALL DEFINITION '/
103
104
105
106
107 CALL my_alloc(ikine1,3*numnod)
108
109 WRITE(iout,1000)
110
111
112 k = 0
113
114 offs = 0
115
116 DO i=1,3*numnod
117 ikine1(i) = 0
118 ENDDO
119
120
121
122
123
124
125
129 CALL HM_OPTION_COUNT('/rwall/paral' ,NCHPARAL )
130 CALL HM_OPTION_COUNT('/rwall/lagmul',NCHLAGM )
131 CALL HM_OPTION_COUNT('/rwall/therm' ,NCHTHERM )
132
133
134 IF (NCHPLAN > 0) THEN
135 CALL HM_READ_RWALL_PLANE(RWL ,NPRW ,LPRW ,IFI ,MS ,
136 . V ,ITAB ,ITABM1 ,X ,IKINE ,
137 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
138 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHPLAN ,
139 . K ,OFFS ,IKINE1 )
140 ENDIF
141
142
143 IF (NCHCYL > 0) THEN
144 CALL HM_READ_RWALL_CYL(RWL ,NPRW ,LPRW ,IFI ,MS ,
145 . V ,ITAB ,ITABM1 ,X ,IKINE ,
146 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
147 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHCYL ,
148 . K ,OFFS ,IKINE1 )
149 ENDIF
150
151
152 IF (NCHSPHER > 0) THEN
153 CALL HM_READ_RWALL_SPHER(RWL ,NPRW ,LPRW ,IFI ,MS ,
154 . V ,ITAB ,ITABM1 ,X ,IKINE ,
155 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
156 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHSPHER,
157 . K ,OFFS ,IKINE1 )
158 ENDIF
159
160
161 IF (NCHPARAL > 0) THEN
162 CALL HM_READ_RWALL_PARAL(RWL ,NPRW ,LPRW ,IFI ,MS ,
163 . V ,ITAB ,ITABM1 ,X ,IKINE ,
164 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
165 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHPARAL,
166 . K ,OFFS ,IKINE1 )
167 ENDIF
168
169
170 IF (NCHLAGM > 0) THEN
171 CALL HM_READ_RWALL_LAGMUL(RWL ,NPRW ,LPRW ,IFI ,MS ,
172 . V ,ITAB ,ITABM1 ,X ,IKINE ,
173 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
174 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHLAGM ,
175 . K ,OFFS ,IKINE1LAG)
176 ENDIF
177
178
179 IF (NCHTHERM > 0) THEN
180 CALL HM_READ_RWALL_THERM(RWL ,NPRW ,LPRW ,IFI ,MS ,
181 . V ,ITAB ,ITABM1 ,X ,IKINE ,
182 . IGRNOD ,MFI ,IMERGE ,UNITAB ,IDDLEVEL,
183 . LSUBMODEL,RTRANS ,NOM_OPT ,ITAGND ,NCHTHERM,
184 . K ,OFFS ,IKINE1 ,IXS ,IXQ ,
185 . NPC )
186 ENDIF
187
188
189
190
191 CALL UDOUBLE(NOM_OPT,LNOPT1,NRWALL,MESS,0,BID)
192 DO N=1,NRWALL
193 NSL = NPRW(N)
194 IPEN = NPRW(N+8*NRWALL)
195 IF (IPEN > 0) LNSPEN = LNSPEN + NSL + 1 ! stif+leng_m
196 END DO
197 DEALLOCATE(IKINE1)
198 RETURN
199 1000 FORMAT(
200 . ' rigid wall definitions '/
201 . ' ---------------------- '/)
subroutine hm_option_count(entity_type, hm_option_number)