27 (coreprof, coretransp, &
28 coretransp1, coretransp2, coretransp3, &
29 coretransp4, coretransp5, coretransp_out,&
30 amix_tr, code_parameters)
40 USE deallocate_structures
49 INTEGER,
PARAMETER :: num_transp=5
53 TYPE (type_coreprof
),
POINTER :: coreprof(:)
55 TYPE (type_coretransp
),
POINTER :: coretransp(:)
57 TYPE (type_coretransp
),
POINTER :: coretransp1(:)
58 TYPE (type_coretransp
),
POINTER :: coretransp2(:)
59 TYPE (type_coretransp
),
POINTER :: coretransp3(:)
60 TYPE (type_coretransp
),
POINTER :: coretransp4(:)
61 TYPE (type_coretransp
),
POINTER :: coretransp5(:)
63 TYPE (type_coretransp
),
POINTER :: coretransp_out(:)
65 TYPE (type_coretransp
),
POINTER :: coretransp_arr(:)
66 TYPE (type_coretransp
),
POINTER :: coretransp_mix(:)
68 TYPE (type_param
) :: code_parameters
74 REAL (R8),
SAVE :: c_sigma(num_transp) = 0.0_r8
75 REAL (R8),
SAVE :: c_ne_diff(num_transp) = 0.0_r8
76 REAL (R8),
SAVE :: c_ne_vconv(num_transp) = 0.0_r8
77 REAL (R8),
SAVE :: c_ni_diff(num_transp) = 0.0_r8
78 REAL (R8),
SAVE :: c_ni_vconv(num_transp) = 0.0_r8
79 REAL (R8),
SAVE :: c_te_diff(num_transp) = 0.0_r8
80 REAL (R8),
SAVE :: c_te_vconv(num_transp) = 0.0_r8
81 REAL (R8),
SAVE :: c_ti_diff(num_transp) = 0.0_r8
82 REAL (R8),
SAVE :: c_ti_vconv(num_transp) = 0.0_r8
83 REAL (R8),
SAVE :: c_vtor_diff(num_transp) = 0.0_r8
84 REAL (R8),
SAVE :: c_vtor_vconv(num_transp) = 0.0_r8
85 REAL (R8),
SAVE :: c_nz_diff(num_transp) = 0.0_r8
86 REAL (R8),
SAVE :: c_nz_vconv(num_transp) = 0.0_r8
87 REAL (R8),
SAVE :: c_tz_diff(num_transp) = 0.0_r8
88 REAL (R8),
SAVE :: c_tz_vconv(num_transp) = 0.0_r8
90 INTEGER :: negative_diff = 0
91 INTEGER :: ne_conv = 0
92 INTEGER :: te_conv = 0
93 INTEGER :: ni_conv = 0
94 INTEGER :: ti_conv = 0
95 INTEGER :: vtor_conv = 0
96 INTEGER :: nz_conv = 0
97 INTEGER :: tz_conv = 0
99 REAL (R8),
ALLOCATABLE :: rho_tor(:)
103 INTEGER,
PARAMETER :: nslice = 1
104 INTEGER :: nrho, irho
106 INTEGER :: nion, iion
107 INTEGER :: nimp, iimp
108 INTEGER,
ALLOCATABLE :: nzimp(:)
109 INTEGER :: nneut, ineut
110 INTEGER,
ALLOCATABLE :: ncomp(:)
111 INTEGER,
ALLOCATABLE :: ntype(:)
114 INTEGER :: inum, iarr, ival
115 INTEGER :: return_status
116 logical,
save :: firstcall=.true.
124 write(*,*)
'calling assign_combiner_params'
127 IF (return_status /= 0)
THEN
128 WRITE(*,*)
'ERROR: Could not assign transport multipliers.'
133 write(*,*)
'C_ne_diff', c_ne_diff
148 CALL deallocate_cpo(coretransp_out)
151 nrho =
SIZE(coreprof(1)%rho_tor)
152 ALLOCATE (rho_tor(nrho))
154 CALL
get_comp_dimensions(coreprof(1)%COMPOSITIONS, nnucl, nion, nimp, nzimp, nneut, ntype, ncomp)
159 CALL deallocate_cpo(coretransp_out(1)%compositions)
160 CALL copy_cpo(coreprof(1)%compositions, coretransp_out(1)%compositions)
163 rho_tor = coreprof(1)%rho_tor
164 coretransp_out(1)%VALUES(1)%rho_tor = rho_tor
167 coretransp_arr(inum)%VALUES(1)%rho_tor = coretransp_out(1)%VALUES(1)%rho_tor
168 CALL deallocate_cpo(coretransp_arr(inum)%compositions)
169 CALL copy_cpo(coretransp_out(1)%compositions, coretransp_arr(inum)%compositions)
186 DO inum=1, num_transp
188 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%sigma) .AND. c_sigma(inum).NE.0.0_r8) &
189 coretransp_out(1)%VALUES(1)%sigma = coretransp_out(1)%VALUES(1)%sigma &
190 + coretransp_arr(inum)%VALUES(1)%sigma &
193 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ne_transp%diff_eff) .AND. c_ne_diff(inum).NE.0.0_r8) &
194 coretransp_out(1)%VALUES(1)%ne_transp%diff_eff = coretransp_out(1)%VALUES(1)%ne_transp%diff_eff &
195 + coretransp_arr(inum)%VALUES(1)%ne_transp%diff_eff &
197 IF(ne_conv.EQ.0)
THEN
198 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ne_transp%vconv_eff) .AND. c_ne_vconv(inum).NE.0.0_r8) &
199 coretransp_out(1)%VALUES(1)%ne_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ne_transp%vconv_eff &
200 + coretransp_arr(inum)%VALUES(1)%ne_transp%vconv_eff &
202 ELSE IF(ne_conv.EQ.1)
THEN
203 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ne_transp%diff_eff) .AND. c_ne_vconv(inum).NE.0.0_r8) &
204 coretransp_out(1)%VALUES(1)%ne_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ne_transp%vconv_eff &
205 + coretransp_arr(inum)%VALUES(1)%ne_transp%diff_eff &
209 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%te_transp%diff_eff) .AND. c_te_diff(inum).NE.0.0_r8) &
210 coretransp_out(1)%VALUES(1)%te_transp%diff_eff = coretransp_out(1)%VALUES(1)%te_transp%diff_eff &
211 + coretransp_arr(inum)%VALUES(1)%te_transp%diff_eff &
213 IF(te_conv.EQ.0)
THEN
214 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%te_transp%vconv_eff) .AND. c_te_vconv(inum).NE.0.0_r8) &
215 coretransp_out(1)%VALUES(1)%te_transp%vconv_eff = coretransp_out(1)%VALUES(1)%te_transp%vconv_eff &
216 + coretransp_arr(inum)%VALUES(1)%te_transp%vconv_eff &
218 ELSE IF(te_conv.EQ.1)
THEN
219 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%te_transp%diff_eff) .AND. c_te_vconv(inum).NE.0.0_r8) &
220 coretransp_out(1)%VALUES(1)%te_transp%vconv_eff = coretransp_out(1)%VALUES(1)%te_transp%vconv_eff &
221 + coretransp_arr(inum)%VALUES(1)%te_transp%diff_eff &
225 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ni_transp%diff_eff) .AND. c_ni_diff(inum).NE.0.0_r8) &
226 coretransp_out(1)%VALUES(1)%ni_transp%diff_eff = coretransp_out(1)%VALUES(1)%ni_transp%diff_eff &
227 + coretransp_arr(inum)%VALUES(1)%ni_transp%diff_eff &
229 IF(ni_conv.EQ.0)
THEN
230 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ni_transp%vconv_eff) .AND. c_ni_vconv(inum).NE.0.0_r8) &
231 coretransp_out(1)%VALUES(1)%ni_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ni_transp%vconv_eff &
232 + coretransp_arr(inum)%VALUES(1)%ni_transp%vconv_eff &
234 ELSE IF(ni_conv.EQ.1)
THEN
235 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ni_transp%diff_eff) .AND. c_ni_vconv(inum).NE.0.0_r8) &
236 coretransp_out(1)%VALUES(1)%ni_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ni_transp%vconv_eff &
237 + coretransp_arr(inum)%VALUES(1)%ni_transp%diff_eff &
241 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ti_transp%diff_eff) .AND. c_ti_diff(inum).NE.0.0_r8) &
242 coretransp_out(1)%VALUES(1)%ti_transp%diff_eff = coretransp_out(1)%VALUES(1)%ti_transp%diff_eff &
243 + coretransp_arr(inum)%VALUES(1)%ti_transp%diff_eff &
245 IF(ti_conv.EQ.0)
THEN
246 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ti_transp%vconv_eff) .AND. c_ti_vconv(inum).NE.0.0_r8) &
247 coretransp_out(1)%VALUES(1)%ti_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ti_transp%vconv_eff &
248 + coretransp_arr(inum)%VALUES(1)%ti_transp%vconv_eff &
250 ELSE IF(ti_conv.EQ.1)
THEN
251 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%ti_transp%diff_eff) .AND. c_ti_vconv(inum).NE.0.0_r8) &
252 coretransp_out(1)%VALUES(1)%ti_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ti_transp%vconv_eff &
253 + coretransp_arr(inum)%VALUES(1)%ti_transp%diff_eff &
257 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%vtor_transp%diff_eff) .AND. c_vtor_diff(inum).NE.0.0_r8) &
258 coretransp_out(1)%VALUES(1)%vtor_transp%diff_eff = coretransp_out(1)%VALUES(1)%vtor_transp%diff_eff &
259 + coretransp_arr(inum)%VALUES(1)%vtor_transp%diff_eff &
261 IF(vtor_conv.EQ.0)
THEN
262 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%vtor_transp%vconv_eff) .AND. c_vtor_vconv(inum).NE.0.0_r8) &
263 coretransp_out(1)%VALUES(1)%vtor_transp%vconv_eff = coretransp_out(1)%VALUES(1)%vtor_transp%vconv_eff &
264 + coretransp_arr(inum)%VALUES(1)%vtor_transp%vconv_eff &
266 ELSE IF(vtor_conv.EQ.1)
THEN
267 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%vtor_transp%diff_eff) .AND. c_vtor_vconv(inum).NE.0.0_r8) &
268 coretransp_out(1)%VALUES(1)%vtor_transp%vconv_eff = coretransp_out(1)%VALUES(1)%vtor_transp%vconv_eff &
269 + coretransp_arr(inum)%VALUES(1)%vtor_transp%diff_eff &
276 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%nz_transp(iimp)%diff_eff) .AND. c_nz_diff(inum).NE.0.0_r8) &
277 coretransp_out(1)%VALUES(1)%nz_transp(iimp)%diff_eff = coretransp_out(1)%VALUES(1)%nz_transp(iimp)%diff_eff &
278 + coretransp_arr(inum)%VALUES(1)%nz_transp(iimp)%diff_eff &
280 IF(nz_conv.EQ.0)
THEN
281 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%nz_transp(iimp)%vconv_eff) .AND. c_nz_vconv(inum).NE.0.0_r8) &
282 coretransp_out(1)%VALUES(1)%nz_transp(iimp)%vconv_eff = coretransp_out(1)%VALUES(1)%nz_transp(iimp)%vconv_eff &
283 + coretransp_arr(inum)%VALUES(1)%nz_transp(iimp)%vconv_eff &
285 ELSE IF(nz_conv.EQ.1)
THEN
286 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%nz_transp(iimp)%diff_eff) .AND. c_nz_vconv(inum).NE.0.0_r8) &
287 coretransp_out(1)%VALUES(1)%nz_transp(iimp)%vconv_eff = coretransp_out(1)%VALUES(1)%nz_transp(iimp)%vconv_eff &
288 + coretransp_arr(inum)%VALUES(1)%nz_transp(iimp)%diff_eff &
292 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%tz_transp(iimp)%diff_eff) .AND. c_tz_diff(inum).NE.0.0_r8) &
293 coretransp_out(1)%VALUES(1)%tz_transp(iimp)%diff_eff = coretransp_out(1)%VALUES(1)%tz_transp(iimp)%diff_eff &
294 + coretransp_arr(inum)%VALUES(1)%tz_transp(iimp)%diff_eff &
296 IF(tz_conv.EQ.0)
THEN
297 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%tz_transp(iimp)%vconv_eff) .AND. c_tz_vconv(inum).NE.0.0_r8) &
298 coretransp_out(1)%VALUES(1)%tz_transp(iimp)%vconv_eff = coretransp_out(1)%VALUES(1)%tz_transp(iimp)%vconv_eff &
299 + coretransp_arr(inum)%VALUES(1)%tz_transp(iimp)%vconv_eff &
301 ELSE IF(tz_conv.EQ.1)
THEN
302 IF(
ASSOCIATED(coretransp_arr(inum)%VALUES(1)%tz_transp(iimp)%diff_eff) .AND. c_tz_vconv(inum).NE.0.0_r8) &
303 coretransp_out(1)%VALUES(1)%tz_transp(iimp)%vconv_eff = coretransp_out(1)%VALUES(1)%tz_transp(iimp)%vconv_eff &
304 + coretransp_arr(inum)%VALUES(1)%tz_transp(iimp)%diff_eff &
315 CALL deallocate_cpo(coretransp_mix(1)%VALUES(1)%rho_tor)
316 CALL copy_cpo(coretransp_out(1)%VALUES(1)%rho_tor, coretransp_mix(1)%VALUES(1)%rho_tor)
317 CALL deallocate_cpo(coretransp_mix(1)%compositions)
318 CALL copy_cpo(coretransp_out(1)%compositions, coretransp_mix(1)%compositions)
322 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%sigma)) &
323 coretransp_out(1)%VALUES(1)%sigma = coretransp_out(1)%VALUES(1)%sigma * amix_tr &
324 + coretransp_mix(1)%VALUES(1)%sigma * (1.0_r8 - amix_tr)
326 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%ni_transp%diff_eff)) &
327 coretransp_out(1)%VALUES(1)%ni_transp%diff_eff = coretransp_out(1)%VALUES(1)%ni_transp%diff_eff * amix_tr &
328 + coretransp_mix(1)%VALUES(1)%ni_transp%diff_eff * (1.0_r8 - amix_tr)
330 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%ni_transp%vconv_eff)) &
331 coretransp_out(1)%VALUES(1)%ni_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ni_transp%vconv_eff * amix_tr &
332 + coretransp_mix(1)%VALUES(1)%ni_transp%vconv_eff * (1.0_r8 - amix_tr)
334 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%ne_transp%diff_eff)) &
335 coretransp_out(1)%VALUES(1)%ne_transp%diff_eff = coretransp_out(1)%VALUES(1)%ne_transp%diff_eff * amix_tr &
336 + coretransp_mix(1)%VALUES(1)%ne_transp%diff_eff * (1.0_r8 - amix_tr)
337 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%ne_transp%vconv_eff)) &
338 coretransp_out(1)%VALUES(1)%ne_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ne_transp%vconv_eff * amix_tr &
339 + coretransp_mix(1)%VALUES(1)%ne_transp%vconv_eff * (1.0_r8 - amix_tr)
341 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%ti_transp%diff_eff)) &
342 coretransp_out(1)%VALUES(1)%ti_transp%diff_eff = coretransp_out(1)%VALUES(1)%ti_transp%diff_eff * amix_tr &
343 + coretransp_mix(1)%VALUES(1)%ti_transp%diff_eff * (1.0_r8 - amix_tr)
344 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%ti_transp%vconv_eff)) &
345 coretransp_out(1)%VALUES(1)%ti_transp%vconv_eff = coretransp_out(1)%VALUES(1)%ti_transp%vconv_eff * amix_tr &
346 + coretransp_mix(1)%VALUES(1)%ti_transp%vconv_eff * (1.0_r8 - amix_tr)
348 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%te_transp%diff_eff)) &
349 coretransp_out(1)%VALUES(1)%te_transp%diff_eff = coretransp_out(1)%VALUES(1)%te_transp%diff_eff * amix_tr &
350 + coretransp_mix(1)%VALUES(1)%te_transp%diff_eff * (1.0_r8 - amix_tr)
351 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%te_transp%vconv_eff)) &
352 coretransp_out(1)%VALUES(1)%te_transp%vconv_eff = coretransp_out(1)%VALUES(1)%te_transp%vconv_eff * amix_tr &
353 + coretransp_mix(1)%VALUES(1)%te_transp%vconv_eff * (1.0_r8 - amix_tr)
355 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%vtor_transp%diff_eff)) &
356 coretransp_out(1)%VALUES(1)%vtor_transp%diff_eff = coretransp_out(1)%VALUES(1)%vtor_transp%diff_eff * amix_tr &
357 + coretransp_mix(1)%VALUES(1)%vtor_transp%diff_eff * (1.0_r8 - amix_tr)
358 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%vtor_transp%vconv_eff)) &
359 coretransp_out(1)%VALUES(1)%vtor_transp%vconv_eff = coretransp_out(1)%VALUES(1)%vtor_transp%vconv_eff * amix_tr &
360 + coretransp_mix(1)%VALUES(1)%vtor_transp%vconv_eff * (1.0_r8 - amix_tr)
364 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%nz_transp(iimp)%diff_eff)) &
365 coretransp_out(1)%VALUES(1)%nz_transp(iimp)%diff_eff = coretransp_out(1)%VALUES(1)%nz_transp(iimp)%diff_eff * amix_tr &
366 + coretransp_mix(1)%VALUES(1)%nz_transp(iimp)%diff_eff * (1.0_r8 - amix_tr)
367 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%nz_transp(iimp)%vconv_eff)) &
368 coretransp_out(1)%VALUES(1)%nz_transp(iimp)%vconv_eff= coretransp_out(1)%VALUES(1)%nz_transp(iimp)%vconv_eff * amix_tr &
369 + coretransp_mix(1)%VALUES(1)%nz_transp(iimp)%vconv_eff * (1.0_r8 - amix_tr)
371 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%tz_transp(iimp)%diff_eff)) &
372 coretransp_out(1)%VALUES(1)%tz_transp(iimp)%diff_eff = coretransp_out(1)%VALUES(1)%tz_transp(iimp)%diff_eff * amix_tr &
373 + coretransp_mix(1)%VALUES(1)%tz_transp(iimp)%diff_eff * (1.0_r8 - amix_tr)
374 IF(
ASSOCIATED(coretransp_mix(1)%VALUES(1)%tz_transp(iimp)%vconv_eff)) &
375 coretransp_out(1)%VALUES(1)%tz_transp(iimp)%vconv_eff= coretransp_out(1)%VALUES(1)%tz_transp(iimp)%vconv_eff * amix_tr &
376 + coretransp_mix(1)%VALUES(1)%tz_transp(iimp)%vconv_eff * (1.0_r8 - amix_tr)
380 IF(
ALLOCATED(rho_tor))
DEALLOCATE ( rho_tor )
381 IF(
ALLOCATED(nzimp))
DEALLOCATE ( nzimp )
382 IF(
ALLOCATED(ncomp))
DEALLOCATE ( ncomp )
383 IF(
ALLOCATED(ntype))
DEALLOCATE ( ntype )
384 CALL deallocate_cpo(coretransp_arr)
385 CALL deallocate_cpo(coretransp_mix)
388 ALLOCATE (coretransp_out(1)%VALUES(1)%transportid%id(1))
389 ALLOCATE (coretransp_out(1)%VALUES(1)%transportid%description(1))
390 coretransp_out(1)%VALUES(1)%transportid%id =
'combined'
391 coretransp_out(1)%VALUES(1)%transportid%flag = 12
392 coretransp_out(1)%VALUES(1)%transportid%description =
'Derived from a number of contributions'
398 ALLOCATE (coretransp_arr(6))
399 CALL copy_cpo(coretransp1(1), coretransp_arr(1))
400 CALL copy_cpo(coretransp2(1), coretransp_arr(2))
401 CALL copy_cpo(coretransp3(1), coretransp_arr(3))
402 CALL copy_cpo(coretransp4(1), coretransp_arr(4))
403 CALL copy_cpo(coretransp5(1), coretransp_arr(5))
406 DO inum = 1, num_transp
407 iarr = iarr +
SIZE(coretransp_arr(inum)%VALUES)
409 ALLOCATE (coretransp_mix(1))
410 ALLOCATE (coretransp_mix(1)%VALUES(iarr))
412 CALL copy_cpo(coretransp_out(1)%VALUES(1), coretransp_mix(1)%VALUES(1))
413 CALL deallocate_cpo(coretransp_out(1)%VALUES)
414 ALLOCATE (coretransp_out(1)%VALUES(iarr))
415 CALL copy_cpo(coretransp_mix(1)%VALUES(1), coretransp_out(1)%VALUES(1))
419 DO inum = 1, num_transp
420 DO iarr = 1,
SIZE(coretransp_arr(inum)%VALUES)
421 CALL copy_cpo(coretransp_arr(inum)%VALUES(iarr), coretransp_out(1)%VALUES(ival))
422 IF (.NOT.
ASSOCIATED(coretransp_out(1)%VALUES(ival)%transportid%id))
THEN
423 ALLOCATE (coretransp_out(1)%VALUES(ival)%transportid%id(1))
424 coretransp_out(1)%VALUES(ival)%transportid%id =
'unspecified'
425 coretransp_out(1)%VALUES(ival)%transportid%flag = 0
426 IF (.NOT.
ASSOCIATED(coretransp_out(1)%VALUES(ival)%transportid%description))
THEN
427 ALLOCATE(coretransp_out(1)%VALUES(ival)%transportid%description(1))
428 coretransp_out(1)%VALUES(ival)%transportid%description =
'Unspecified transport type'
435 CALL deallocate_cpo(coretransp_arr)
436 CALL deallocate_cpo(coretransp_mix)
472 TYPE(type_param
) :: codeparameters
473 INTEGER(ITM_I4) :: return_status
474 INTEGER(ITM_I4) :: vod
475 INTEGER(ITM_I4) :: nparm
477 CHARACTER(len = 132) :: prefix
479 TYPE(element
),
POINTER :: temp_pointer
480 TYPE(tree
) :: parameter_list
481 CHARACTER(len = 132) :: parameter_value
482 CHARACTER(len = 4) :: parameter_char
497 c_vtor_vconv = 0.0_r8
506 prefix =
'parameters/CURRENT/conductivity'
508 prefix =
'parameters/NE/diffusion'
510 prefix =
'parameters/NE/convective_velocity'
513 prefix =
'parameters/NI/diffusion'
515 prefix =
'parameters/NI/convective_velocity'
518 prefix =
'parameters/NZ/diffusion'
520 prefix =
'parameters/NZ/convective_velocity'
523 prefix =
'parameters/TE/diffusion'
525 prefix =
'parameters/TE/convective_velocity'
528 prefix =
'parameters/TI/diffusion'
530 prefix =
'parameters/TI/convective_velocity'
533 prefix =
'parameters/TZ/diffusion'
535 prefix =
'parameters/TZ/convective_velocity'
538 prefix =
'parameters/VTOR/diffusion'
540 prefix =
'parameters/VTOR/convective_velocity'
544 CALL euitm_xml_parse(codeparameters, nparm, parameter_list)
545 temp_pointer => parameter_list%first
546 prefix =
'parameters/CHECKs/remove_negative_diffusion'
547 CALL find_parameter(prefix, parameter_value, temp_pointer)
548 parameter_char = trim(adjustl(parameter_value))
549 IF (parameter_char.EQ.
"true") negative_diff = 1
550 CALL destroy_xml_tree(parameter_list)
569 TYPE(type_param
) :: codeparameters
570 INTEGER(ITM_I4) :: return_status
572 CHARACTER(len = 132) :: prefix
573 CHARACTER(len = 132) :: inter_path(3)
574 CHARACTER(len = 132) :: multiplier_path(num_transp)
575 CHARACTER(len = 132) :: parameter_value
576 REAL(R8) :: multipliers(num_transp)
579 TYPE(element
),
POINTER :: temp_pointer
580 TYPE(tree
) :: parameter_list
582 INTEGER(ITM_I4) :: i_transp, nval, i_int
583 INTEGER(ITM_I4) :: nparm, vod
588 CALL euitm_xml_parse(codeparameters, nparm, parameter_list)
590 inter_path(1) = trim(adjustl(prefix))//
"/Multipliers_for_conductivity_from"
591 inter_path(2) = trim(adjustl(prefix))//
"/Multipliers_for_contributions_from"
592 inter_path(3) = trim(adjustl(prefix))//
"/V_over_D_ratio_for_contributions_from"
595 multiplier_path(1) = trim(adjustl(inter_path(i_int)))//
"/Data_Base"
596 multiplier_path(2) = trim(adjustl(inter_path(i_int)))//
"/Anomalous"
597 multiplier_path(3) = trim(adjustl(inter_path(i_int)))//
"/Neoclassical"
598 multiplier_path(4) = trim(adjustl(inter_path(i_int)))//
"/Background"
599 multiplier_path(5) = trim(adjustl(inter_path(i_int)))//
"/Spitzer"
601 DO i_transp = 1, num_transp
602 temp_pointer => parameter_list%first
603 CALL find_parameter(multiplier_path(i_transp), parameter_value, temp_pointer)
604 IF (len(trim(parameter_value)).GE.1)
THEN
605 CALL scan_str2real(parameter_value, value ,nval)
606 multipliers(i_transp) = value(1)
610 IF (i_int.EQ.3.AND.abs(maxval(multipliers)).NE.0.0_r8) vod = 0
618 CALL destroy_xml_tree(parameter_list)
subroutine get_comp_dimensions(COMPOSITIONS, NNUCL, NION, NIMP, NZIMP, NNEUT, NTYPE, NCOMP)
subroutine interpolate_transp(CORETRANSP_IN, CORETRANSP_OUT, NEGATIVE_DIFF)
subroutine combine_transport(COREPROF, CORETRANSP, CORETRANSP1, CORETRANSP2, CORETRANSP3, CORETRANSP4, CORETRANSP5, CORETRANSP_OUT, AMIX_TR, code_parameters)
This module contains routines for allocation/deallocation if CPOs used in ETS.
subroutine assign_combiner_parameters(codeparameters, return_status)
subroutine assign_multipliers(prefix, codeparameters, return_status, multipliers)
subroutine allocate_coretransp_cpo(NSLICE, NRHO, NNUCL, NION, NIMP, NZIMP, NNEUT, NTYPE, NCOMP, CORETRANSP)
This routine allocates CORETRANSP CPO.