FIXME : Add documentation
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | report_unit |
subroutine check_init_g(report_unit)
use run_parameters, only : delt_option_switch, delt_option_auto
use species, only : spec, has_electron_species
implicit none
integer, intent(in) :: report_unit
select case (ginitopt_switch)
case (ginitopt_default)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="(' Width in theta: ',f10.4)") width0
if (chop_side) then
write (report_unit, fmt="(' Parity: none')")
else
write (report_unit, fmt="(' Parity: even')")
end if
case (ginitopt_kz0)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="(' Constant along field line',f10.4)") width0
if (chop_side) then
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="(' Parity: none')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('Remedy: set chop_side = .false. in init_g_knobs.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
end if
case (ginitopt_noise)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="(' Noise along field line.')")
if (zf_init /= 1.) then
write (report_unit, fmt="(' Zonal flows adjusted by factor of zf_init = ',f10.4)") zf_init
end if
case (ginitopt_kpar)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="(' Real part multiplier: ',f10.4)") refac
write (report_unit, fmt="(' Imag part multiplier: ',f10.4)") imfac
if (width0 > 0.) then
write (report_unit, fmt="(' Gaussian envelope in theta with width: ',f10.4)") width0
end if
if (chop_side) then
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="(' Parity: none')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('Remedy: set chop_side = .false. in init_g_knobs.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
end if
if (den0 > epsilon(0.0) .or. den1 > epsilon(0.0) .or. den2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial density perturbation of the form:')")
write (report_unit, fmt="('den0 + den1 * cos(theta) + den2 * cos(2.*theta)')")
write (report_unit, *)
write (report_unit, fmt="('with den0 =',f7.4,' den1 = ',f7.4,' den2 = ',f7.4)") den0, den1, den2
end if
if (upar0 > epsilon(0.0) .or. upar1 > epsilon(0.0) .or. upar2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial parallel velocity perturbation of the form:')")
write (report_unit, fmt="('upar0 + upar1 * sin(theta) + upar2 * sin(2.*theta)')")
write (report_unit, fmt="('90 degrees out of phase with other perturbations.')")
write (report_unit, *)
write (report_unit, fmt="('with upar0 =',f7.4,' upar1 = ',f7.4,' upar2 = ',f7.4)") upar0, upar1, upar2
end if
if (tpar0 > epsilon(0.0) .or. tpar1 > epsilon(0.0) .or. tpar2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial Tpar perturbation of the form:')")
write (report_unit, fmt="('tpar0 + tpar1 * cos(theta) + tpar2 * cos(2.*theta)')")
write (report_unit, *)
write (report_unit, fmt="('with tpar0 =',f7.4,' tpar1 = ',f7.4,' tpar2 = ',f7.4)") tpar0, tpar1, tpar2
end if
if (tperp0 > epsilon(0.0) .or. tperp1 > epsilon(0.0) .or. tperp2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial Tperp perturbation of the form:')")
write (report_unit, fmt="('tperp0 + tperp1 * cos(theta) + tperp2 * cos(2.*theta)')")
write (report_unit, *)
write (report_unit, fmt="('with tperp0 =',f7.4,' tperp1 = ',f7.4,' tperp2 = ',f7.4)") tperp0, tperp1, tperp2
end if
if (has_electron_species(spec)) then
write (report_unit, *)
write (report_unit, fmt="('Field line average of g_electron subtracted off.')")
end if
case (ginitopt_gs)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Randomly phased kpar=1 sines and cosines')")
write (report_unit, fmt="(' in density, upar, tpar, or tperp.')")
write (report_unit, fmt="(' Real part amplitude: ',f10.4)") refac*phiinit
write (report_unit, fmt="(' Imag part amplitude: ',f10.4)") imfac*phiinit
if (abs( den1) > epsilon(0.0)) write (report_unit, fmt="(' Density amplitude: ',f10.4)") den1
if (abs( upar1) > epsilon(0.0)) write (report_unit, fmt="(' Upar amplitude: ',f10.4)") upar1
if (abs( tpar1) > epsilon(0.0)) write (report_unit, fmt="(' Tpar amplitude: ',f10.4)") tpar1
if (abs(tperp1) > epsilon(0.0)) write (report_unit, fmt="(' Tperp amplitude: ',f10.4)") tperp1
case (ginitopt_nl)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="('At most two k_perps excited, with amplitude = ',f10.4)") phiinit
write (report_unit, fmt="(' First k_perp has ik = ',i3,' it = ',i3)") ikk(1), itt(1)
write (report_unit, fmt="('Second k_perp has ik = ',i3,' it = ',i3)") ikk(2), itt(2)
if (chop_side) then
write (report_unit, fmt="(' Parity: none')")
else
write (report_unit, fmt="(' Parity: even')")
end if
write (report_unit, fmt="('Reality condition is enforced.')")
case (ginitopt_nl2)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="('At most two k_perps excited, with amplitude = ',f10.4)") phiinit
write (report_unit, fmt="(' First k_perp has ik = ',i3,' it = ',i3)") ikk(1), itt(1)
write (report_unit, fmt="('Second k_perp has ik = ',i3,' it = ',i3)") ikk(2), itt(2)
if (chop_side) then
write (report_unit, fmt="(' Parity: none')")
else
write (report_unit, fmt="(' Parity: even')")
end if
write (report_unit, fmt="('Reality condition is enforced.')")
write (report_unit, fmt="('g perturbation proportional to (1+v_parallel)*sin(theta)')")
case (ginitopt_nl3)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="('At most two k_perps excited, with amplitude = ',f10.4)") phiinit
write (report_unit, fmt="(' First k_perp has ik = ',i3,' it = ',i3)") ikk(1), itt(1)
write (report_unit, fmt="('Second k_perp has ik = ',i3,' it = ',i3)") ikk(2), itt(2)
write (report_unit, fmt="(' Real part multiplied by: ',f10.4)") refac
write (report_unit, fmt="(' Imag part multiplied by: ',f10.4)") imfac
if (width0 > 0.) then
write (report_unit, fmt="(' Gaussian envelope in theta with width: ',f10.4)") width0
end if
if (chop_side) then
write (report_unit, fmt="(' Parity: none')")
else
write (report_unit, fmt="(' Parity: even')")
end if
write (report_unit, fmt="('Reality condition is enforced.')")
if (den0 > epsilon(0.0) .or. den1 > epsilon(0.0) .or. den2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial density perturbation of the form:')")
write (report_unit, fmt="('den0 + den1 * cos(theta) + den2 * cos(2.*theta)')")
write (report_unit, *)
write (report_unit, fmt="('with den0 =',f7.4,' den1 = ',f7.4,' den2 = ',f7.4)") den0, den1, den2
end if
if (upar0 > epsilon(0.0) .or. upar1 > epsilon(0.0) .or. upar2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial parallel velocity perturbation of the form:')")
write (report_unit, fmt="('upar0 + upar1 * cos(theta) + upar2 * cos(2.*theta)')")
write (report_unit, fmt="('90 degrees out of phase with other perturbations.')")
write (report_unit, *)
write (report_unit, fmt="('with upar0 =',f7.4,' upar1 = ',f7.4,' upar2 = ',f7.4)") upar0, upar1, upar2
end if
if (tpar0 > epsilon(0.0) .or. tpar1 > epsilon(0.0) .or. tpar2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial Tpar perturbation of the form:')")
write (report_unit, fmt="('tpar0 + tpar1 * cos(theta) + tpar2 * cos(2.*theta)')")
write (report_unit, *)
write (report_unit, fmt="('with tpar0 =',f7.4,' tpar1 = ',f7.4,' tpar2 = ',f7.4)") tpar0, tpar1, tpar2
end if
if (tperp0 > epsilon(0.0) .or. tperp1 > epsilon(0.0) .or. tperp2 > epsilon(0.0)) then
write (report_unit, *)
write (report_unit, fmt="('Initial Tperp perturbation of the form:')")
write (report_unit, fmt="('tperp0 + tperp1 * cos(theta) + tperp2 * cos(2.*theta)')")
write (report_unit, *)
write (report_unit, fmt="('with tperp0 =',f7.4,' tperp1 = ',f7.4,' tperp2 = ',f7.4)") tperp0, tperp1, tperp2
end if
case (ginitopt_nl4)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Under development for study of secondary instabilities.')")
write (report_unit, fmt="('Scale factor: ',f10.4)") scale
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_nl5)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Under development for study of secondary instabilities.')")
write (report_unit, fmt="('Scale factor: ',f10.4)") scale
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_nl6)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Change amplitude of a particular mode.')")
write (report_unit, fmt="('Scale factor: ',f10.4)") scale
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_xi)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Perturbation proportional to pitch angle.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_xi2)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Perturbation proportional to function of pitch angle.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_rh)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Maxwellian perturbation in ik=1 mode.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_alf)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Ion dist fn proportional to v_parallel * sin(theta).')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_zero)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Distribution function = 0.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_test3)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_convect)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_restart_file)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('Restart from a single NetCDF restart file.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_restart_many)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="('Each PE restarts from its own NetCDF restart file.')")
case (ginitopt_restart_small)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="('Each PE restarts from its own NetCDF restart file.')")
write (report_unit, fmt="('with amplitudes scaled by factor of scale = ',f10.4)") scale
write (report_unit, fmt="('Noise added with amplitude = ',f10.4)") phiinit
case (ginitopt_continue)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
case (ginitopt_cgyro)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="('Constant amplitude for ky!=0')")
write (report_unit, fmt="('Zero amplitude for ky=0')")
case (ginitopt_random_sine)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="(' Zonal amplitude: ',f10.4)") zf_init
write (report_unit, fmt="(' Max mode: ',I0)") max_mode
write (report_unit, fmt="(' Random sum of sine waves up to max_mode mode number')")
case (ginitopt_constant)
write (report_unit, fmt="('Initial conditions:')")
write (report_unit, fmt="(' Amplitude: ',f10.4)") phiinit
write (report_unit, fmt="(' Zonal amplitude: ',f10.4)") zf_init
write (report_unit, fmt="(' Constant value')")
end select
if (ginitopt_switch == ginitopt_restart_many) then
if (delt_option_switch == delt_option_auto) then
write (report_unit, *)
write (report_unit, fmt="('This run is a continuation of a previous run.')")
write (report_unit, fmt="('The time step at the beginning of this run')")
write (report_unit, fmt="('will be taken from the end of the previous run.')")
else
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('This run is a continuation of a previous run.')")
write (report_unit, fmt="('The time step is being set by hand.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('You probably want to set delt_option to be check_restart in the knobs namelist.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
end if
end if
if (delt_option_switch == delt_option_auto) then
if (ginitopt_switch /= ginitopt_restart_many) then
write (report_unit, *)
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, fmt="('This is not a normal continuation run.')")
write (report_unit, fmt="('You probably want to set delt_option to be default in the knobs namelist.')")
write (report_unit, fmt="('THIS IS PROBABLY AN ERROR.')")
write (report_unit, fmt="('################# WARNING #######################')")
write (report_unit, *)
end if
end if
end subroutine check_init_g