38
39
40
43 USE multi_fvm_mod
46 USE ebcs_mod
48
49
50
51#include "implicit_f.inc"
52
53
54
55#include "units_c.inc"
56#include "com04_c.inc"
57
58
59
60 TYPE (),INTENT(IN) ::UNITAB
61 INTEGER NPC(*),ID
62 TYPE (MULTI_FVM_STRUCT), INTENT(INOUT) :: MULTI_FVM
63 TYPE (SURF_) ,TARGET, DIMENSION(NSURF) :: IGRSURF
64 CHARACTER(LEN=NCHARTITLE), INTENT(IN) :: TITR
65 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
66 TYPE(t_ebcs_pres), INTENT(INOUT) :: EBCS
67
68
69
70 INTEGER ISU,SURF,NGR2USR,IPRES,IRHO,J,NSEG,IENER,IVX,IVY,IVZ
71 my_real c,pres,rho,lcar,r1,r2,ener,vx,vy,vz
73 INTEGER, DIMENSION(:), POINTER :: INGR2USR
74 LOGICAL IS_ENCRYPTED, IS_AVAILABLE
75
76
77
78
79 ipres=0
80 ivx=0
81 ivy=0
82 ivz=0
83 irho=0
84 iener=0
85 c=zero
86 pres=zero
87 rho=zero
88 lcar=zero
89 r1=zero
90 r2=zero
91 ener=zero
92 vx=zero
93 vy=zero
94 vz=zero
95
96 ebcs%title = trim(titr)
97
99 CALL hm_get_intv(
'entityid', surf ,is_available,lsubmodel)
100
101 isu=0
102 ingr2usr => igrsurf(1:nsurf)%ID
103 IF (surf/=0) isu=
ngr2usr(surf,ingr2usr,nsurf)
104 nseg=0
105 IF (isu/=0) nseg=igrsurf(isu)%NSEG
106 IF(surf==0)THEN
107 ierr=ierr+1
108 WRITE(istdo,'(6X,A)')' ** A SURFACE SHOULD BE INPUT'
109 WRITE(iout, '(6X,A)')' ** A SURFACE SHOULD BE INPUT'
110 ELSEIF(isu==0)THEN
111 ierr=ierr+1
112 WRITE(istdo,*)' ** ERROR SURFACE NOT FOUND, ID=',surf
113 WRITE(iout,*) ' ** ERROR SURFACE NOT FOUND, ID=',surf
114 ELSEIF(nseg==0)THEN
115 ierr=ierr+1
116 WRITE(istdo,*)' ** ERROR EMPTY SURFACE',surf
117 WRITE(iout,*) ' ** ERROR EMPTY SURFACE',surf
118 ENDIF
119
120
121 CALL hm_get_floatv(
'rad_ebcs_c', c ,is_available,lsubmodel,unitab)
122
123
124 CALL hm_get_intv(
'rad_fct_pr', ipres ,is_available,lsubmodel)
125 CALL hm_get_floatv(
'rad_ebcs_fscale_pr', pres ,is_available,lsubmodel,unitab)
126
127
128 CALL hm_get_intv(
'rad_fct_rho', irho ,is_available,lsubmodel)
129 CALL hm_get_floatv(
'rad_ebcs_fscale_rho', rho ,is_available,lsubmodel,unitab)
130
131
132 CALL hm_get_intv(
'rad_fct_en', iener ,is_available,lsubmodel)
133 CALL hm_get_floatv(
'rad_ebcs_fscale_en', ener ,is_available,lsubmodel,unitab
134
135
136 CALL hm_get_floatv(
'rad_ebcs_lc', lcar ,is_available,lsubmodel,unitab)
137 CALL hm_get_floatv(
'rad_ebcs_r1', r1 ,is_available,lsubmodel,unitab)
138 CALL hm_get_floatv(
'rad_ebcs_r2', r2 ,is_available,lsubmodel,unitab)
139
140
141 IF(surf/=0 .AND. isu/=0 .AND. nseg/=0)THEN
142 WRITE(iout,1001)
id,trim(titr)
143 WRITE(iout,1101)surf,nseg,c,pres,ipres,rho,irho,ener,iener,lcar,r1,r2
144 ENDIF
145 DO j=1,nfunct
146 IF(ipres/=0 .AND. ipres==npc(j)) THEN
147 ipres=j
148 EXIT
149 ENDIF
150 ENDDO
151 DO j=1,nfunct
152 IF(irho/=0 .AND. irho==npc(j)) THEN
153 irho=j
154 EXIT
155 ENDIF
156 ENDDO
157 DO j=1,nfunct
158 IF(iener/=0 .AND. iener==npc(j)) THEN
159 iener=j
160 EXIT
161 ENDIF
162 ENDDO
163 DO j=1,nfunct
164 IF(ivx/=0 .AND. ivx==npc(j)) THEN
165 ivx=j
166 EXIT
167 ENDIF
168 ENDDO
169 DO j=1,nfunct
170 IF(ivy/=0 .AND. ivy==npc(j)) THEN
171 ivy=j
172 EXIT
173 ENDIF
174 ENDDO
175 DO j=1,nfunct
176 IF(ivz/=0 .AND. ivz==npc(j)) THEN
177 ivz=j
178 EXIT
179 ENDIF
180 ENDDO
181
182
183
184
185
186 ebcs%title = titr
187 ebcs%ipres = ipres
188 ebcs%irho = irho
189 ebcs%iener = iener
190 ebcs%ivx = ivx
191 ebcs%ivy = ivy
192 ebcs%ivz = ivz
193 ebcs%c = c
194 ebcs%pres = pres
195 ebcs%rho = rho
196 ebcs%lcar = lcar
197 ebcs%r1 = r1
198 ebcs%r2 = r2
199 ebcs%ener = ener
200 ebcs%vx = vx
201 ebcs%vy = vy
202 ebcs%vz = vz
203
204 IF (multi_fvm%IS_USED) THEN
205 CALL ancmsg(msgid = 1602, msgtype = msgerror, anmode = aninfo,
206 . i1 =
id, c1 = trim(titr), c2 =
"NOT COMPATIBLE WITH LAW 151")
207 ENDIF
208
209
210 RETURN
211
212
213 1001 FORMAT( //'IMPOSED PRESSURE EBCS NUMBER . . . . . . :',i8,1x,a)
214 1101 FORMAT(
215 . ' ON SURFACE . . . . . . . . . . . . . . . ',i8,/,
216 . ' NUMBER OF SEGMENTS FOUND. . . . . . . . . ',i8,/,
217 . ' SPEED OF SOUND . . . . . . . . . . . . . ',e16.6,/,
218 . ' IMPOSED PRESSURE . . . . . . . . . . . . ',e16.6,/
219 . ' PRESSURE SCALING FUNCTION . . . . . . . . ',i8,/,
220 . ' IMPOSED DENSITY . . . . . . . . . . . . . ',e16.6,/,
221 . ' DENSITY SCALING FUNCTION . . . . . . . . ',i8,/,
222 . ' IMPOSED ENERGY . . . . . . . . . . . . . ',e16.6,/,
223 . ' ENERGY SCALING FUNCTION . . . . . . . . . ',i8,/,
224 . ' CHARACTERISTIC LENGTH . . . . . . . . . . ',e16.6,/,
225 . ' LINEAR RESISTANCE . . . . . . . . . . . . ',e16.6,/,
226 . ' QUADRATIC RESISTANCE . . . . . . . . . . ',e16.6,/)
227
subroutine hm_get_floatv(name, rval, is_available, lsubmodel, unitab)
subroutine hm_get_intv(name, ival, is_available, lsubmodel)
subroutine hm_option_is_encrypted(is_encrypted)
integer, parameter nchartitle
integer function ngr2usr(iu, igr, ngr)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)