neutral Module

ALL ARRAYS THAT FOLLOW ARE USED WHEN INCLUDING NEUTRAL PERTURBATIONS FROM ANOTHER MODEL ARRAYS TO STORE THE NEUTRAL GRID INFORMATION as long as the neutral module is in scope these persist and do not require a "save"; this variable only used by the axisymmetric interpolation THIS SHARES SO MUCH CODE WITH THE AXISYMMETRIC VERSION THAT THEY SHOULD PROBABLY BE COMBINED


Uses

  • module~~neutral~~UsesGraph module~neutral neutral ieee_arithmetic ieee_arithmetic module~neutral->ieee_arithmetic module~reader reader module~neutral->module~reader iso_fortran_env iso_fortran_env module~neutral->iso_fortran_env module~phys_consts phys_consts module~neutral->module~phys_consts module~interpolation interpolation module~neutral->module~interpolation module~mesh mesh module~neutral->module~mesh module~mpimod mpimod module~neutral->module~mpimod module~grid grid module~neutral->module~grid module~timeutils timeutils module~neutral->module~timeutils module~reader->iso_fortran_env module~reader->module~phys_consts module~phys_consts->iso_fortran_env module~interpolation->module~phys_consts module~mesh->module~phys_consts module~mpimod->iso_fortran_env module~mpimod->module~phys_consts mpi mpi module~mpimod->mpi module~grid->module~reader module~grid->iso_fortran_env module~grid->module~phys_consts module~grid->module~mesh module~grid->module~mpimod module~timeutils->iso_fortran_env module~timeutils->module~phys_consts

Used by

  • module~~neutral~~UsedByGraph module~neutral neutral module~atmos atmos module~atmos->module~neutral program~gemini3d Gemini3D program~gemini3d->module~neutral module~multifluid multifluid program~gemini3d->module~multifluid module~ionization ionization module~ionization->module~neutral module~glow_mod glow_mod module~glow_mod->module~ionization module~multifluid->module~ionization module~glow_dummy glow_dummy module~glow_dummy->module~ionization

Contents


Variables

TypeVisibility AttributesNameInitial
real(kind=wp), private, dimension(:), allocatable:: rhon
real(kind=wp), private, dimension(:), allocatable:: yn
real(kind=wp), private, dimension(:), allocatable:: zn
real(kind=wp), private, dimension(:), allocatable:: xn
integer, private :: lrhon

STORAGE FOR NEUTRAL SIMULATION DATA.

THESE ARE INCLUDED AS MODULE VARIATIONS TO AVOID HAVING TO REALLOCATE AND DEALLOCIATE EACH TIME WE NEED TO INTERP

integer, private :: lzn

STORAGE FOR NEUTRAL SIMULATION DATA.

THESE ARE INCLUDED AS MODULE VARIATIONS TO AVOID HAVING TO REALLOCATE AND DEALLOCIATE EACH TIME WE NEED TO INTERP

integer, private :: lyn

STORAGE FOR NEUTRAL SIMULATION DATA.

THESE ARE INCLUDED AS MODULE VARIATIONS TO AVOID HAVING TO REALLOCATE AND DEALLOCIATE EACH TIME WE NEED TO INTERP

integer, private :: lxn

STORAGE FOR NEUTRAL SIMULATION DATA.

THESE ARE INCLUDED AS MODULE VARIATIONS TO AVOID HAVING TO REALLOCATE AND DEALLOCIATE EACH TIME WE NEED TO INTERP

real(kind=wp), private, dimension(:,:,:), allocatable:: dnO

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:,:,:), allocatable:: dnN2

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:,:,:), allocatable:: dnO2

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:,:,:), allocatable:: dvnrho

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:,:,:), allocatable:: dvnz

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:,:,:), allocatable:: dvnx

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:,:,:), allocatable:: dTn

full grid parameters for root to store input from files.

real(kind=wp), private, dimension(:), allocatable:: xnall
real(kind=wp), private, dimension(:), allocatable:: ynall
integer, private :: lxnall
integer, private :: lynall
real(kind=wp), private, dimension(:,:,:), allocatable:: dnOall
real(kind=wp), private, dimension(:,:,:), allocatable:: dnN2all
real(kind=wp), private, dimension(:,:,:), allocatable:: dnO2all
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnrhoall
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnzall
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnxall
real(kind=wp), private, dimension(:,:,:), allocatable:: dTnall
real(kind=wp), private, dimension(:,:,:), allocatable:: dnOiprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dnN2iprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dnO2iprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnrhoiprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnziprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dTniprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dvn1iprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dvn2iprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dvn3iprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnxiprev
real(kind=wp), private :: tprev
integer, private, dimension(3):: ymdprev

denoted time corresponding to "prev" interpolated data

real(kind=wp), private :: UTsecprev
real(kind=wp), private, dimension(:,:,:), allocatable:: dnOinext
real(kind=wp), private, dimension(:,:,:), allocatable:: dnN2inext
real(kind=wp), private, dimension(:,:,:), allocatable:: dnO2inext
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnrhoinext
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnzinext
real(kind=wp), private, dimension(:,:,:), allocatable:: dTninext
real(kind=wp), private, dimension(:,:,:), allocatable:: dvn1inext
real(kind=wp), private, dimension(:,:,:), allocatable:: dvn2inext
real(kind=wp), private, dimension(:,:,:), allocatable:: dvn3inext
real(kind=wp), private, dimension(:,:,:), allocatable:: dvnxinext
real(kind=wp), private :: tnext
integer, private, dimension(3):: ymdnext
real(kind=wp), private :: UTsecnext
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_erhop_e1
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_ezp_e1
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_erhop_e2
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_ezp_e2
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_erhop_e3
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_ezp_e3
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_eyp_e1
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_eyp_e2
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_eyp_e3
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_exp_e1
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_exp_e2
real(kind=wp), private, dimension(:,:,:), allocatable:: proj_exp_e3
real(kind=wp), private, dimension(:), allocatable:: zi
real(kind=wp), private, dimension(:), allocatable:: yi
real(kind=wp), private, dimension(:), allocatable:: xi
real(kind=wp), private, dimension(:), allocatable:: rhoi
real(kind=wp), private, dimension(:,:), allocatable:: extents
integer, private, dimension(:,:), allocatable:: indx
integer, private, dimension(:,:), allocatable:: slabsizes

BASE MSIS ATMOSPHERIC STATE ON WHICH TO APPLY PERTURBATIONS

real(kind=wp), protected, dimension(:,:,:,:), allocatable:: nnmsis
real(kind=wp), public, dimension(:,:,:), allocatable:: Tnmsis
real(kind=wp), protected, dimension(:,:,:), allocatable:: vn1base
real(kind=wp), protected, dimension(:,:,:), allocatable:: vn2base
real(kind=wp), protected, dimension(:,:,:), allocatable:: vn3base

Interfaces

interface

  • public module subroutine neutral_atmos(ymd, UTsecd, glat, glon, alt, activ, nn, Tn)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in) :: ymd(3)
    real(kind=wp), intent(in) :: UTsecd
    real(kind=wp), intent(in), dimension(:,:,:):: glat
    real(kind=wp), intent(in), dimension(:,:,:):: glon
    real(kind=wp), intent(in), dimension(:,:,:):: alt
    real(kind=wp), intent(in) :: activ(3)
    real(kind=wp), intent(out), dimension(1:size(alt,1),1:size(alt,2),1:size(alt,3),lnchem):: nn
    real(kind=wp), intent(out), dimension(1:size(alt,1),1:size(alt,2),1:size(alt,3)):: Tn

Subroutines

public subroutine neutral_perturb(interptype, dt, dtneu, t, ymd, UTsec, neudir, dxn, drhon, dzn, meanlat, meanlong, x, nn, Tn, vn1, vn2, vn3)

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: interptype
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: dtneu
real(kind=wp), intent(in) :: t
integer, intent(in), dimension(3):: ymd
real(kind=wp), intent(in) :: UTsec
character(len=*), intent(in) :: neudir
real(kind=wp), intent(in) :: dxn
real(kind=wp), intent(in) :: drhon
real(kind=wp), intent(in) :: dzn
real(kind=wp), intent(in) :: meanlat
real(kind=wp), intent(in) :: meanlong
type(curvmesh), intent(inout) :: x
real(kind=wp), intent(out), dimension(:,:,:,:):: nn
real(kind=wp), intent(out), dimension(:,:,:):: Tn
real(kind=wp), intent(out), dimension(:,:,:):: vn1
real(kind=wp), intent(out), dimension(:,:,:):: vn2
real(kind=wp), intent(out), dimension(:,:,:):: vn3

private subroutine neutral_perturb_axisymm(dt, dtneu, t, ymd, UTsec, neudir, drhon, dzn, meanlat, meanlong, x, nn, Tn, vn1, vn2, vn3)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: dtneu
real(kind=wp), intent(in) :: t
integer, intent(in), dimension(3):: ymd
real(kind=wp), intent(in) :: UTsec
character(len=*), intent(in) :: neudir
real(kind=wp), intent(in) :: drhon
real(kind=wp), intent(in) :: dzn
real(kind=wp), intent(in) :: meanlat
real(kind=wp), intent(in) :: meanlong
type(curvmesh), intent(inout) :: x
real(kind=wp), intent(out), dimension(:,:,:,:):: nn
real(kind=wp), intent(out), dimension(:,:,:):: Tn
real(kind=wp), intent(out), dimension(:,:,:):: vn1
real(kind=wp), intent(out), dimension(:,:,:):: vn2
real(kind=wp), intent(out), dimension(:,:,:):: vn3

private subroutine neutral_perturb_cart(dt, dtneu, t, ymd, UTsec, neudir, dyn, dzn, meanlat, meanlong, x, nn, Tn, vn1, vn2, vn3)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: dtneu
real(kind=wp), intent(in) :: t
integer, intent(in), dimension(3):: ymd
real(kind=wp), intent(in) :: UTsec
character(len=*), intent(in) :: neudir
real(kind=wp), intent(in) :: dyn
real(kind=wp), intent(in) :: dzn
real(kind=wp), intent(in) :: meanlat
real(kind=wp), intent(in) :: meanlong
type(curvmesh), intent(inout) :: x
real(kind=wp), intent(out), dimension(:,:,:,:):: nn
real(kind=wp), intent(out), dimension(:,:,:):: Tn
real(kind=wp), intent(out), dimension(:,:,:):: vn1
real(kind=wp), intent(out), dimension(:,:,:):: vn2
real(kind=wp), intent(out), dimension(:,:,:):: vn3

private subroutine neutral_perturb_3D(dt, dtneu, t, ymd, UTsec, neudir, dxn, dyn, dzn, meanlat, meanlong, x, nn, Tn, vn1, vn2, vn3)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in) :: dtneu
real(kind=wp), intent(in) :: t
integer, intent(in), dimension(3):: ymd
real(kind=wp), intent(in) :: UTsec
character(len=*), intent(in) :: neudir
real(kind=wp), intent(in) :: dxn
real(kind=wp), intent(in) :: dyn
real(kind=wp), intent(in) :: dzn
real(kind=wp), intent(in) :: meanlat
real(kind=wp), intent(in) :: meanlong
type(curvmesh), intent(inout) :: x
real(kind=wp), intent(out), dimension(:,:,:,:):: nn
real(kind=wp), intent(out), dimension(:,:,:):: Tn
real(kind=wp), intent(out), dimension(:,:,:):: vn1
real(kind=wp), intent(out), dimension(:,:,:):: vn2
real(kind=wp), intent(out), dimension(:,:,:):: vn3

private subroutine gridproj_dneu2D(dhorzn, dzn, meanlat, meanlong, neudir, flagcart, x)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: dhorzn
real(kind=wp), intent(in) :: dzn
real(kind=wp), intent(in) :: meanlat
real(kind=wp), intent(in) :: meanlong
character(len=*), intent(in) :: neudir
logical, intent(in) :: flagcart
type(curvmesh), intent(inout) :: x

private subroutine gridproj_dneu3D(dxn, dyn, dzn, meanlat, meanlong, neudir, x)

COMPUTE DISTANCES - ZZZ possibly superfluous for 3D case???

Read more…

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: dxn
real(kind=wp), intent(in) :: dyn
real(kind=wp), intent(in) :: dzn
real(kind=wp), intent(in) :: meanlat
real(kind=wp), intent(in) :: meanlong
character(len=*), intent(in) :: neudir
type(curvmesh), intent(inout) :: x

private subroutine read_dneu2D(tprev, tnext, t, dtneu, dt, neudir, ymdtmp, UTsectmp, flagcart)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: tprev
real(kind=wp), intent(in) :: tnext
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in) :: dtneu
real(kind=wp), intent(in) :: dt
character(len=*), intent(in) :: neudir
integer, intent(out), dimension(3):: ymdtmp
real(kind=wp), intent(out) :: UTsectmp
logical, intent(in) :: flagcart

private subroutine read_dneu3D(tprev, tnext, t, dtneu, dt, neudir, ymdtmp, UTsectmp)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: tprev
real(kind=wp), intent(in) :: tnext
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in) :: dtneu
real(kind=wp), intent(in) :: dt
character(len=*), intent(in) :: neudir
integer, intent(out), dimension(3):: ymdtmp
real(kind=wp), intent(out) :: UTsectmp

private subroutine spaceinterp_dneu2D(flagcart)

Arguments

Type IntentOptional AttributesName
logical, intent(in) :: flagcart

private subroutine spaceinterp_dneu3D()

Arguments

None

private subroutine timeinterp_dneu(t, dt, dNOinow, dnN2inow, dnO2inow, dvn1inow, dvn2inow, dvn3inow, dTninow)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(out), dimension(:,:,:):: dNOinow
real(kind=wp), intent(out), dimension(:,:,:):: dnN2inow
real(kind=wp), intent(out), dimension(:,:,:):: dnO2inow
real(kind=wp), intent(out), dimension(:,:,:):: dvn1inow
real(kind=wp), intent(out), dimension(:,:,:):: dvn2inow
real(kind=wp), intent(out), dimension(:,:,:):: dvn3inow
real(kind=wp), intent(out), dimension(:,:,:):: dTninow

private subroutine slabrange(maxzn, ximat, yimat, zimat, sourcemlat, xnrange, ynrange)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in) :: maxzn
real(kind=wp), intent(in), dimension(:,:,:):: ximat
real(kind=wp), intent(in), dimension(:,:,:):: yimat
real(kind=wp), intent(in), dimension(:,:,:):: zimat
real(kind=wp), intent(in) :: sourcemlat
real(kind=wp), intent(out), dimension(2):: xnrange
real(kind=wp), intent(out), dimension(2):: ynrange

private subroutine range2inds(ranges, zn, xnall, ynall, indices)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(in), dimension(6):: ranges
real(kind=wp), intent(in), dimension(:):: zn
real(kind=wp), intent(in), dimension(:):: xnall
real(kind=wp), intent(in), dimension(:):: ynall
integer, intent(out), dimension(6):: indices

public subroutine make_dneu()

Arguments

None

public subroutine clear_dneu()

Arguments

None