22 type (type_equilibrium
),
pointer :: euitm_equilibrium_in(:)
23 type (type_equilibrium
),
pointer :: euitm_equilibrium_out(:)
24 type (type_param
),
save :: code_parameters
26 logical,
save :: first = .true.
27 integer,
save :: ncall = 0
28 character*32 :: filename =
'EQ_######'
31 subroutine helena (euitm_equilibrium_in, euitm_equilibrium_out, in_path, code_parameters)
34 type (type_equilibrium
),
pointer :: euitm_equilibrium_in(:)
35 type (type_equilibrium
),
pointer :: euitm_equilibrium_out(:)
36 character(len = 132),
optional :: in_path
37 type (type_param
) :: code_parameters
42 call fill_param(code_parameters,
'XML/helena.xml',
'',
'XML/helena.xsd')
46 if(
associated(euitm_equilibrium_in(1)%profiles_1d%jparallel))
then
47 maxabs = maxval(abs(euitm_equilibrium_in(1)%profiles_1d%jphi))
48 write(*,*)
'max( | jphi | ) = ', maxabs
49 if(maxabs .EQ. 0.0_r8)
then
50 write(*,*)
'helena_wrapper copied jparallel to jphi [ERROR]'
51 if(.not.
associated(euitm_equilibrium_in(1)%profiles_1d%jphi)) &
52 allocate(euitm_equilibrium_in(1)%profiles_1d%jphi(
size(euitm_equilibrium_in(1)%profiles_1d%jparallel)))
53 euitm_equilibrium_in(1)%profiles_1d%jphi = euitm_equilibrium_in(1)%profiles_1d%jparallel
56 if(
associated(euitm_equilibrium_in(1)%profiles_1d%psi))
then
57 write(*,*)
'helena_wrapper set psi_bound and psi_ax [ERROR]'
58 write(*,*) euitm_equilibrium_in(1)%global_param%psi_ax, euitm_equilibrium_in(1)%profiles_1d%psi(1)
59 write(*,*) euitm_equilibrium_in(1)%global_param%psi_bound, euitm_equilibrium_in(1)%profiles_1d%psi(
size(euitm_equilibrium_in(1)%profiles_1d%psi))
60 euitm_equilibrium_in(1)%global_param%psi_ax = euitm_equilibrium_in(1)%profiles_1d%psi(1)
61 euitm_equilibrium_in(1)%global_param%psi_bound = &
62 euitm_equilibrium_in(1)%profiles_1d%psi(
size(euitm_equilibrium_in(1)%profiles_1d%psi))
66 call
f_par_axis(
size(euitm_equilibrium_in(1)%profiles_1d%rho_tor), &
67 euitm_equilibrium_in(1)%profiles_1d%rho_tor,euitm_equilibrium_in(1)%profiles_1d%pressure)
71 write(filename(4:9),
'(I6.6)') ncall
72 write(*,*)
'Writing EQUILIBRIUM ', trim(filename)//
'.IN'
73 call open_write_file(1, trim(filename)//
'.IN')
74 call write_cpo(euitm_equilibrium_in(1),
'equilibrium')
76 write(*,*)
'associated(euitm_equilibrium_out) ',
associated(euitm_equilibrium_out)
77 CALL
helena(euitm_equilibrium_in, euitm_equilibrium_out, code_parameters=code_parameters)
78 write(*,*)
'Writing EQUILIBRIUM ', trim(filename)//
'.OUT'
79 call open_write_file(1, trim(filename)//
'.OUT')
80 call write_cpo(euitm_equilibrium_out(1),
'equilibrium')
82 if(.not.
associated(euitm_equilibrium_out(1)%profiles_1d%jparallel))
then
83 write(*,*)
'helena_wrapper copied jphi to jparallel [ERROR]'
84 allocate(euitm_equilibrium_out(1)%profiles_1d%jparallel(
size(euitm_equilibrium_out(1)%profiles_1d%jphi)))
85 euitm_equilibrium_out(1)%profiles_1d%jparallel = euitm_equilibrium_out(1)%profiles_1d%jphi
87 maxabs = maxval(abs(euitm_equilibrium_out(1)%profiles_1d%jparallel))
88 write(*,*)
'max( | jparallel | ) = ', maxabs
89 if(maxabs .EQ. 0.0_r8)
then
90 write(*,*)
'helena_wrapper copied jphi to jparallel [ERROR]'
91 euitm_equilibrium_out(1)%profiles_1d%jparallel = euitm_equilibrium_out(1)%profiles_1d%jphi
subroutine helena(equilibrium_in, equilibrium_out, in_path, code_parameters)
subroutine helena_wrapper(euitm_equilibrium_in, euitm_equilibrium_out)
subroutine f_par_axis(n, r, f)
This subroutine finds f(r_1=0) from f(r_2), f(r_3) d/dr f(r_1)=0.