src/gray_params.f90: formatting
This commit is contained in:
parent
75c30ee834
commit
023facac6b
@ -40,7 +40,6 @@ module gray_params
|
|||||||
integer :: ipec, nrho, istpr, istpl
|
integer :: ipec, nrho, istpr, istpl
|
||||||
end type outparam_type
|
end type outparam_type
|
||||||
|
|
||||||
|
|
||||||
integer, save :: iequil,iprof,ipol
|
integer, save :: iequil,iprof,ipol
|
||||||
integer, save :: iwarm,ilarm,imx,ieccd
|
integer, save :: iwarm,ilarm,imx,ieccd
|
||||||
integer, save :: igrad,idst,ipass
|
integer, save :: igrad,idst,ipass
|
||||||
@ -48,11 +47,12 @@ module gray_params
|
|||||||
integer, save :: ipec,nnd
|
integer, save :: ipec,nnd
|
||||||
|
|
||||||
contains
|
contains
|
||||||
|
|
||||||
subroutine print_params(rtrparam,hcdparam,antctrl,eqparam,rwall, &
|
subroutine print_params(rtrparam,hcdparam,antctrl,eqparam,rwall, &
|
||||||
prfparam,outparam,strout)
|
prfparam,outparam,strout)
|
||||||
implicit none
|
implicit none
|
||||||
! arguments
|
|
||||||
|
! arguments
|
||||||
type(rtrparam_type), intent(in) :: rtrparam
|
type(rtrparam_type), intent(in) :: rtrparam
|
||||||
type(hcdparam_type), intent(in) :: hcdparam
|
type(hcdparam_type), intent(in) :: hcdparam
|
||||||
type(antctrl_type), intent(in) :: antctrl
|
type(antctrl_type), intent(in) :: antctrl
|
||||||
@ -61,29 +61,33 @@ contains
|
|||||||
type(prfparam_type), intent(in) :: prfparam
|
type(prfparam_type), intent(in) :: prfparam
|
||||||
type(outparam_type), intent(in) :: outparam
|
type(outparam_type), intent(in) :: outparam
|
||||||
character(len=*), dimension(:), intent(out) :: strout ! min len=110, dimension(21)
|
character(len=*), dimension(:), intent(out) :: strout ! min len=110, dimension(21)
|
||||||
! local variables
|
|
||||||
|
! local variables
|
||||||
character(len=8) :: rdat
|
character(len=8) :: rdat
|
||||||
character(len=10) :: rtim
|
character(len=10) :: rtim
|
||||||
#ifndef REVISION
|
#ifndef REVISION
|
||||||
character(len=*), parameter :: REVISION="unknown"
|
character(len=*), parameter :: REVISION="unknown"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
! date and time
|
! date and time
|
||||||
call date_and_time(rdat,rtim)
|
call date_and_time(rdat,rtim)
|
||||||
write(strout(1),'("# Run date/time: ",a4,2("/",a2),1x,2(a2,":"),a6)') &
|
write(strout(1),'("# Run date/time: ",a4,2("/",a2),1x,2(a2,":"),a6)') &
|
||||||
rdat(1:4),rdat(5:6),rdat(7:8),rtim(1:2),rtim(3:4),rtim(5:10)
|
rdat(1:4),rdat(5:6),rdat(7:8),rtim(1:2),rtim(3:4),rtim(5:10)
|
||||||
! SVN revision
|
|
||||||
write(strout(2),'("# GRAY SVN revision: ",a)') REVISION
|
! Git revision
|
||||||
! equilibrium input data
|
write(strout(2),'("# GRAY Git revision: ",a)') REVISION
|
||||||
|
|
||||||
|
! equilibrium input data
|
||||||
if (eqparam%iequil > 0) then
|
if (eqparam%iequil > 0) then
|
||||||
write(strout(3),'("# EQL input: ",a)') trim(eqparam%filenm)
|
write(strout(3),'("# EQL input: ",a)') trim(eqparam%filenm)
|
||||||
!!!!!!! missing values
|
!!! missing values
|
||||||
write(strout(7),'("# EQL B0 R0 aminor Rax zax:",5(1x,e12.5))') &
|
write(strout(7),'("# EQL B0 R0 aminor Rax zax:",5(1x,e12.5))') &
|
||||||
0._wp_, 0._wp_, 0._wp_, 0._wp_, 0._wp_
|
0._wp_, 0._wp_, 0._wp_, 0._wp_, 0._wp_
|
||||||
else
|
else
|
||||||
write(strout(3),'("# EQL input: N/A (vacuum)")')
|
write(strout(3),'("# EQL input: N/A (vacuum)")')
|
||||||
write(strout(7),'("# EQL B0 R0 aminor Rax zax: N/A (vacuum)")')
|
write(strout(7),'("# EQL B0 R0 aminor Rax zax: N/A (vacuum)")')
|
||||||
end if
|
end if
|
||||||
|
|
||||||
write(strout(4),'("# EQL iequil sgnb sgni factb:",3(1x,i4),1x,e12.5)') &
|
write(strout(4),'("# EQL iequil sgnb sgni factb:",3(1x,i4),1x,e12.5)') &
|
||||||
eqparam%iequil, eqparam%sgnb, eqparam%sgni, eqparam%factb
|
eqparam%iequil, eqparam%sgnb, eqparam%sgni, eqparam%factb
|
||||||
if (eqparam%iequil > 1) then
|
if (eqparam%iequil > 1) then
|
||||||
@ -95,7 +99,8 @@ contains
|
|||||||
write(strout(5),'("# EQL icocos ipsinorm idesc ifreefmt: N/A (analytical)")')
|
write(strout(5),'("# EQL icocos ipsinorm idesc ifreefmt: N/A (analytical)")')
|
||||||
write(strout(6),'("# EQL ssplps ssplf ixp: N/A (analytical)")')
|
write(strout(6),'("# EQL ssplps ssplf ixp: N/A (analytical)")')
|
||||||
end if
|
end if
|
||||||
! profiles input data
|
|
||||||
|
! profiles input data
|
||||||
if (eqparam%iequil > 0) then
|
if (eqparam%iequil > 0) then
|
||||||
write(strout(8),'("# PRF input: ",a)') trim(prfparam%filenm)
|
write(strout(8),'("# PRF input: ",a)') trim(prfparam%filenm)
|
||||||
write(strout(9),'("# PRF iprof iscal factne factte:",2(1x,i4),2(1x,e12.5))') &
|
write(strout(9),'("# PRF iprof iscal factne factte:",2(1x,i4),2(1x,e12.5))') &
|
||||||
@ -106,7 +111,7 @@ contains
|
|||||||
else
|
else
|
||||||
write(strout(10),'("# PRF irho psnbnd sspld: N/A (analytical)")')
|
write(strout(10),'("# PRF irho psnbnd sspld: N/A (analytical)")')
|
||||||
end if
|
end if
|
||||||
!!!!!!! missing values
|
!!! missing values
|
||||||
write(strout(11),'("# PRF Te0 ne0 Zeff0:",3(1x,e12.5))') &
|
write(strout(11),'("# PRF Te0 ne0 Zeff0:",3(1x,e12.5))') &
|
||||||
0._wp_, 0._wp_, 0._wp_
|
0._wp_, 0._wp_, 0._wp_
|
||||||
else
|
else
|
||||||
@ -115,21 +120,24 @@ contains
|
|||||||
write(strout(10),'("# PRF irho psnbnd sspld: N/A (vacuum)")')
|
write(strout(10),'("# PRF irho psnbnd sspld: N/A (vacuum)")')
|
||||||
write(strout(11),'("# PRF Te0 ne0 Zeff0: N/A (vacuum)")')
|
write(strout(11),'("# PRF Te0 ne0 Zeff0: N/A (vacuum)")')
|
||||||
end if
|
end if
|
||||||
! launch parameters
|
|
||||||
|
! launch parameters
|
||||||
write(strout(12),'("# ANT input: ",a)') trim(antctrl%filenm)
|
write(strout(12),'("# ANT input: ",a)') trim(antctrl%filenm)
|
||||||
write(strout(13),'("# ANT ibeam iox psi chi:",2(1x,i4),2(1x,e12.5))') &
|
write(strout(13),'("# ANT ibeam iox psi chi:",2(1x,i4),2(1x,e12.5))') &
|
||||||
antctrl%ibeam, antctrl%iox, antctrl%psi, antctrl%chi
|
antctrl%ibeam, antctrl%iox, antctrl%psi, antctrl%chi
|
||||||
write(strout(14),'("# ANT alpha beta power:",3(1x,e12.5))') &
|
write(strout(14),'("# ANT alpha beta power:",3(1x,e12.5))') &
|
||||||
antctrl%alpha, antctrl%beta, antctrl%power
|
antctrl%alpha, antctrl%beta, antctrl%power
|
||||||
!!!!!!! missing values
|
!!! missing values
|
||||||
write(strout(15),'("# ANT x0 y0 z0:",3(1x,e12.5))') &
|
write(strout(15),'("# ANT x0 y0 z0:",3(1x,e12.5))') &
|
||||||
0._wp_, 0._wp_, 0._wp_
|
0._wp_, 0._wp_, 0._wp_
|
||||||
!!!!!!! missing values
|
!!! missing values
|
||||||
write(strout(16),'("# ANT wx wy Rcix Rciy psiw psir:",6(1x,e12.5))') &
|
write(strout(16),'("# ANT wx wy Rcix Rciy psiw psir:",6(1x,e12.5))') &
|
||||||
0._wp_, 0._wp_, 0._wp_, 0._wp_, 0._wp_, 0._wp_
|
0._wp_, 0._wp_, 0._wp_, 0._wp_, 0._wp_, 0._wp_
|
||||||
! wall parameters
|
|
||||||
|
! wall parameters
|
||||||
write(strout(17),'("# RFL rwall:",1x,e12.5)') rwall
|
write(strout(17),'("# RFL rwall:",1x,e12.5)') rwall
|
||||||
! code parameters
|
|
||||||
|
! code parameters
|
||||||
write(strout(18),'("# COD igrad idst ipass ipol:",4(1x,i4))') &
|
write(strout(18),'("# COD igrad idst ipass ipol:",4(1x,i4))') &
|
||||||
rtrparam%igrad, rtrparam%idst, rtrparam%ipass, rtrparam%ipol
|
rtrparam%igrad, rtrparam%idst, rtrparam%ipass, rtrparam%ipol
|
||||||
write(strout(19),'("# COD nrayr nrayth nstep rwmax dst:",3(1x,i4),2(1x,e12.5))') &
|
write(strout(19),'("# COD nrayr nrayth nstep rwmax dst:",3(1x,i4),2(1x,e12.5))') &
|
||||||
@ -139,12 +147,14 @@ contains
|
|||||||
write(strout(21),'("# COD ipec nrho istpr istpl:",4(1x,i4))') &
|
write(strout(21),'("# COD ipec nrho istpr istpl:",4(1x,i4))') &
|
||||||
outparam%ipec, outparam%nrho, outparam%istpr, outparam%istpl
|
outparam%ipec, outparam%nrho, outparam%istpr, outparam%istpl
|
||||||
end subroutine print_params
|
end subroutine print_params
|
||||||
|
|
||||||
|
|
||||||
subroutine read_params(filenm,rtrparam,hcdparam,antctrl,eqparam,rwall, &
|
subroutine read_params(filenm,rtrparam,hcdparam,antctrl,eqparam,rwall, &
|
||||||
prfparam,outparam,unit)
|
prfparam,outparam,unit)
|
||||||
use utils, only : get_free_unit
|
use utils, only : get_free_unit
|
||||||
implicit none
|
implicit none
|
||||||
! arguments
|
|
||||||
|
! arguments
|
||||||
character(len=*), intent(in) :: filenm
|
character(len=*), intent(in) :: filenm
|
||||||
type(rtrparam_type), intent(out) :: rtrparam
|
type(rtrparam_type), intent(out) :: rtrparam
|
||||||
type(hcdparam_type), intent(out) :: hcdparam
|
type(hcdparam_type), intent(out) :: hcdparam
|
||||||
@ -154,7 +164,8 @@ contains
|
|||||||
type(prfparam_type), intent(out) :: prfparam
|
type(prfparam_type), intent(out) :: prfparam
|
||||||
type(outparam_type), intent(out) :: outparam
|
type(outparam_type), intent(out) :: outparam
|
||||||
integer, intent(in), optional :: unit
|
integer, intent(in), optional :: unit
|
||||||
! local variables
|
|
||||||
|
! local variables
|
||||||
integer :: u
|
integer :: u
|
||||||
|
|
||||||
if (present(unit)) then
|
if (present(unit)) then
|
||||||
@ -162,91 +173,103 @@ contains
|
|||||||
else
|
else
|
||||||
u = get_free_unit()
|
u = get_free_unit()
|
||||||
end if
|
end if
|
||||||
open(u,file=filenm,status= 'old',action='read')
|
open(u,file=filenm,status='old',action='read',iostat=iostat)
|
||||||
|
|
||||||
! ==========================================================================
|
! Raytracing
|
||||||
! nrayr number of rays in radial direction
|
! ========================================================================
|
||||||
! nrayth number of rays in angular direction
|
! nrayr :number of rays in radial direction
|
||||||
! rwmax normalized maximum radius of beam power
|
! nrayth :number of rays in angular direction
|
||||||
! rwmax=1 -> last ray at radius = waist
|
! rwmax :normalized maximum radius of beam power
|
||||||
|
! rwmax=1 -> :last ray at radius = waist
|
||||||
read(u,*) rtrparam%nrayr, rtrparam%nrayth, rtrparam%rwmax
|
read(u,*) rtrparam%nrayr, rtrparam%nrayth, rtrparam%rwmax
|
||||||
! igrad=0 optical ray-tracing, initial conditions as for beam
|
! igrad=0 :optical ray-tracing, initial conditions as for beam
|
||||||
! igrad=1 quasi-optical ray-tracing
|
! igrad=1 :quasi-optical ray-tracing
|
||||||
! igrad=-1 ray-tracing, init. condit.
|
! igrad=-1 :ray-tracing, init. condit.
|
||||||
! from center of mirror and with angular spread
|
! from center of mirror and with angular spread
|
||||||
! ipass=1/2 1 or 2 passes into plasma
|
! ipass=1/2 :1 or 2 passes into plasma
|
||||||
! ipol=0 compute mode polarization at antenna, ipol=1 use polariz angles
|
! ipol=0 :compute mode polarization at antenna, ipol=1 use polariz angles
|
||||||
read(u,*) rtrparam%igrad, rtrparam%ipass, rtrparam%ipol
|
read(u,*) rtrparam%igrad, rtrparam%ipass, rtrparam%ipol
|
||||||
! dst integration step
|
! dst :integration step
|
||||||
! nstep maximum number of integration steps
|
! nstep :maximum number of integration steps
|
||||||
! idst=0/1/2 0 integration in s, 1 integr. in ct, 2 integr. in Sr
|
! idst=0/1/2 :0 integration in s, 1 integr. in ct, 2 integr. in Sr
|
||||||
read(u,*) rtrparam%dst, rtrparam%nstep, rtrparam%idst
|
read(u,*) rtrparam%dst, rtrparam%nstep, rtrparam%idst
|
||||||
! ==========================================================================
|
|
||||||
! iwarm=0 :no absorption and cd
|
! Heating & Current drive
|
||||||
! iwarm=1 :weakly relativistic absorption
|
! ========================================================================
|
||||||
! iwarm=2 :relativistic absorption, n<1 asymptotic expansion
|
! iwarm=0 :no absorption and cd
|
||||||
! iwarm=3 :relativistic absorption, numerical integration
|
! iwarm=1 :weakly relativistic absorption
|
||||||
! ilarm :order of larmor expansion
|
! iwarm=2 :relativistic absorption, n<1 asymptotic expansion
|
||||||
! imx :max n of iterations in dispersion, imx<0 uses 1st
|
! iwarm=3 :relativistic absorption, numerical integration
|
||||||
! iteration in case of failure after |imx| iterations
|
! ilarm :order of larmor expansion
|
||||||
|
! imx :max n of iterations in dispersion, imx<0 uses 1st
|
||||||
|
! iteration in case of failure after |imx| iterations
|
||||||
read(u,*) hcdparam%iwarm,hcdparam%ilarm,hcdparam%imx
|
read(u,*) hcdparam%iwarm,hcdparam%ilarm,hcdparam%imx
|
||||||
|
! ieccd 0/1 NO/YES ECCD calculation ieccd>0 different CD models
|
||||||
! ieccd 0/1 NO/YES ECCD calculation ieccd>0 different CD models
|
|
||||||
read(u,*) hcdparam%ieccd
|
read(u,*) hcdparam%ieccd
|
||||||
! ==========================================================================
|
|
||||||
! alpha0, beta0 (cartesian) launching angles
|
|
||||||
read(u,*) antctrl%alpha, antctrl%beta
|
|
||||||
! p0mw injected power (MW)
|
|
||||||
read(u,*) antctrl%power
|
|
||||||
! abs(iox)=1/2 OM/XM
|
|
||||||
! psipol0,chipol0 polarization angles at the antenna (if iox<0)
|
|
||||||
read(u,*) antctrl%iox, antctrl%psi, antctrl%chi
|
|
||||||
|
|
||||||
! ibeam=0 :read data for beam as above
|
! Wave launcher
|
||||||
! ibeam=1 :read data from file simple astigmatic beam
|
! ========================================================================
|
||||||
! ibeam=2 :read data from file general astigmatic beam
|
! alpha0, beta0 (cartesian) launching angles
|
||||||
|
read(u,*) antctrl%alpha, antctrl%beta
|
||||||
|
! p0mw injected power (MW)
|
||||||
|
read(u,*) antctrl%power
|
||||||
|
! abs(iox)=1/2 OM/XM
|
||||||
|
! psipol0,chipol0 polarization angles at the antenna (if iox<0)
|
||||||
|
read(u,*) antctrl%iox, antctrl%psi, antctrl%chi
|
||||||
|
! ibeam=0 :read data for beam as above
|
||||||
|
! ibeam=1 :read data from file simple astigmatic beam
|
||||||
|
! ibeam=2 :read data from file general astigmatic beam
|
||||||
read(u,*) antctrl%ibeam
|
read(u,*) antctrl%ibeam
|
||||||
read(u,*) antctrl%filenm
|
read(u,*) antctrl%filenm
|
||||||
! ==========================================================================
|
|
||||||
! iequil=0 :vacuum
|
! Magnetic equilibrium
|
||||||
! iequil=1 :analytical equilibrium
|
! ========================================================================
|
||||||
! iequil=2 :read eqdsk
|
! iequil=0 :vacuum
|
||||||
|
! iequil=1 :analytical equilibrium
|
||||||
|
! iequil=2 :read eqdsk
|
||||||
read(u,*) eqparam%iequil
|
read(u,*) eqparam%iequil
|
||||||
read(u,*) eqparam%filenm
|
read(u,*) eqparam%filenm
|
||||||
! icocos :index for equilibrium from COCOS - O. Sauter Feb 2012
|
! icocos :index for equilibrium from COCOS - O. Sauter Feb 2012
|
||||||
! ipsinorm :0 standard EQDSK format, 1 format Portone summer 2004
|
! ipsinorm :0 standard EQDSK format, 1 format Portone summer 2004
|
||||||
read(u,*) eqparam%icocos, eqparam%ipsinorm, eqparam%idesc, eqparam%ifreefmt
|
read(u,*) eqparam%icocos, eqparam%ipsinorm, eqparam%idesc, eqparam%ifreefmt
|
||||||
! ixp=0,-1,+1 : no X point , bottom/up X point
|
! ixp=0,-1,+1 : no X point , bottom/up X point
|
||||||
! ssplps : spline parameter for psi interpolation
|
! ssplps : spline parameter for psi interpolation
|
||||||
read(u,*) eqparam%ixp, eqparam%ssplps !, eqparam%ssplf
|
read(u,*) eqparam%ixp, eqparam%ssplps !, eqparam%ssplf
|
||||||
eqparam%ssplf=0.01_wp_
|
eqparam%ssplf=0.01_wp_
|
||||||
! signum of toroidal B and I
|
! signum of toroidal B and I
|
||||||
! factb factor for magnetic field (only for numerical equil)
|
! factb factor for magnetic field (only for numerical equil)
|
||||||
! scaling adopted: beta=const, qpsi=const, nustar=const
|
! scaling adopted: beta=const, qpsi=const, nustar=const
|
||||||
read(u,*) eqparam%sgnb, eqparam%sgni, eqparam%factb
|
read(u,*) eqparam%sgnb, eqparam%sgni, eqparam%factb
|
||||||
! ==========================================================================
|
|
||||||
|
! Wall
|
||||||
|
! ========================================================================
|
||||||
read(u,*) rwall
|
read(u,*) rwall
|
||||||
! ==========================================================================
|
|
||||||
! iprof=0 :analytical density and temp. profiles
|
! Profiles
|
||||||
! iprof>0 :numerical density and temp. profiles
|
! ========================================================================
|
||||||
|
! iprof=0 :analytical density and temp. profiles
|
||||||
|
! iprof>0 :numerical density and temp. profiles
|
||||||
read(u,*) prfparam%iprof, prfparam%irho ! irho=0,1,2 -> num profiles vs rhot,rhop,psin
|
read(u,*) prfparam%iprof, prfparam%irho ! irho=0,1,2 -> num profiles vs rhot,rhop,psin
|
||||||
read(u,*) prfparam%filenm
|
read(u,*) prfparam%filenm
|
||||||
! psbnd value of psi ( > 1 ) of density boundary
|
! psbnd value of psi ( > 1 ) of density boundary
|
||||||
read(u,*) prfparam%psnbnd, prfparam%sspld
|
read(u,*) prfparam%psnbnd, prfparam%sspld
|
||||||
! prfparam%sspld=0.001_wp_
|
! prfparam%sspld=0.001_wp_
|
||||||
! iscal ne Te scaling 0: nustar=const, 1: n_greenw=const; 2 no rescaling
|
! iscal :ne Te scaling 0: nustar=const, 1: n_greenw=const; 2 no rescaling
|
||||||
! factT factn factor for Te&ne scaling
|
! factT factn :factor for Te&ne scaling
|
||||||
read(u,*) prfparam%factte, prfparam%factne, prfparam%iscal
|
read(u,*) prfparam%factte, prfparam%factne, prfparam%iscal
|
||||||
! ==========================================================================
|
|
||||||
! ipec=0/1 :pec profiles grid in psi/rhop
|
! Output
|
||||||
! nrho :number of grid steps for pec profiles +1
|
! ========================================================================
|
||||||
|
! ipec=0/1 :pec profiles grid in psi/rhop
|
||||||
|
! nrho :number of grid steps for pec profiles +1
|
||||||
read(u,*) outparam%ipec, outparam%nrho
|
read(u,*) outparam%ipec, outparam%nrho
|
||||||
! istpr0 projection step = dsdt*istprj
|
! istpr0 :projection step = dsdt*istprj
|
||||||
! istpl0 plot step = dsdt*istpl
|
! istpl0 :plot step = dsdt*istpl
|
||||||
read(u,*) outparam%istpr, outparam%istpl
|
read(u,*) outparam%istpr, outparam%istpl
|
||||||
close(u)
|
close(u)
|
||||||
end subroutine read_params
|
end subroutine read_params
|
||||||
|
|
||||||
|
|
||||||
subroutine set_codepar(eqparam,prfparam,outparam,rtrparam,hcdparam)
|
subroutine set_codepar(eqparam,prfparam,outparam,rtrparam,hcdparam)
|
||||||
implicit none
|
implicit none
|
||||||
type(eqparam_type), intent(in) :: eqparam
|
type(eqparam_type), intent(in) :: eqparam
|
||||||
|
Loading…
Reference in New Issue
Block a user