Line data Source code
1 : module waccmx_phys_intr 2 : use shr_kind_mod, only: r8 => shr_kind_r8 3 : use physics_types, only: physics_state, physics_ptend 4 : use physics_buffer, only: physics_buffer_desc 5 : 6 : #ifdef WACCMX_PHYS 7 : use majorsp_diffusion, only: mspd_init 8 : use majorsp_diffusion, only: mspd_intr 9 : use ion_electron_temp, only: ion_electron_temp_readnl 10 : use ion_electron_temp, only: ion_electron_temp_init 11 : use ion_electron_temp, only: ion_electron_temp_timestep_init 12 : use ion_electron_temp, only: ion_electron_temp_register 13 : use ion_electron_temp, only: ion_electron_temp_inidat 14 : use ion_electron_temp, only: ion_electron_temp_tend 15 : use iondrag, only: iondrag_inidat 16 : #endif 17 : 18 : implicit none 19 : private 20 : 21 : public :: waccmx_phys_mspd_init 22 : public :: waccmx_phys_mspd_tend 23 : public :: waccmx_phys_ion_elec_temp_reg 24 : public :: waccmx_phys_ion_elec_temp_inidat 25 : public :: waccmx_phys_ion_elec_temp_init 26 : public :: waccmx_phys_ion_elec_temp_timestep_init 27 : public :: waccmx_phys_ion_elec_temp_tend 28 : public :: waccmx_phys_ion_elec_temp_readnl 29 : 30 : contains 31 : 32 : !------------------------------------------------------------------------------ 33 : !------------------------------------------------------------------------------ 34 0 : subroutine waccmx_phys_mspd_init 35 : 36 : #ifdef WACCMX_PHYS 37 : call mspd_init() 38 : #endif 39 0 : end subroutine waccmx_phys_mspd_init 40 : 41 : !------------------------------------------------------------------------------ 42 : !------------------------------------------------------------------------------ 43 0 : subroutine waccmx_phys_mspd_tend(ztodt, state, ptend) 44 : 45 : real(r8), intent(in) :: ztodt ! 2 delta-t 46 : type(physics_state), intent(in) :: state ! Physics state variables 47 : type(physics_ptend), intent(inout) :: ptend ! indivdual parameterization tendencies 48 : 49 : #ifdef WACCMX_PHYS 50 : call mspd_intr(ztodt, state, ptend) 51 : #endif 52 0 : end subroutine waccmx_phys_mspd_tend 53 : 54 : !------------------------------------------------------------------------------ 55 : !------------------------------------------------------------------------------ 56 0 : subroutine waccmx_phys_ion_elec_temp_reg 57 : 58 : #ifdef WACCMX_PHYS 59 : call ion_electron_temp_register 60 : #endif 61 : 62 0 : end subroutine waccmx_phys_ion_elec_temp_reg 63 : 64 : !------------------------------------------------------------------------------ 65 : !------------------------------------------------------------------------------ 66 1536 : subroutine waccmx_phys_ion_elec_temp_readnl(nlfilename) 67 : character(len=*), intent(in) :: nlfilename 68 : #ifdef WACCMX_PHYS 69 : call ion_electron_temp_readnl(nlfilename) 70 : #endif 71 1536 : end subroutine waccmx_phys_ion_elec_temp_readnl 72 : 73 : !------------------------------------------------------------------------------ 74 : !------------------------------------------------------------------------------ 75 768 : subroutine waccmx_phys_ion_elec_temp_inidat(ncid_ini,pbuf2d) 76 : 77 : use pio, only : file_desc_t 78 : 79 : type(file_desc_t), intent(inout) :: ncid_ini ! Initial condition file id 80 : type(physics_buffer_desc), pointer :: pbuf2d(:,:) ! Physics buffer 81 : 82 : #ifdef WACCMX_PHYS 83 : call ion_electron_temp_inidat(ncid_ini,pbuf2d) 84 : call iondrag_inidat(ncid_ini,pbuf2d) 85 : #endif 86 768 : end subroutine waccmx_phys_ion_elec_temp_inidat 87 : 88 : !------------------------------------------------------------------------------ 89 : !------------------------------------------------------------------------------ 90 0 : subroutine waccmx_phys_ion_elec_temp_init(pbuf2d) 91 : 92 : type(physics_buffer_desc), pointer :: pbuf2d(:,:) 93 : 94 : #ifdef WACCMX_PHYS 95 : call ion_electron_temp_init(pbuf2d) 96 : #endif 97 0 : end subroutine waccmx_phys_ion_elec_temp_init 98 : 99 : !------------------------------------------------------------------------------ 100 : !------------------------------------------------------------------------------ 101 0 : subroutine waccmx_phys_ion_elec_temp_timestep_init(phys_state,pbuf2d) 102 : use ppgrid, only : begchunk, endchunk 103 : 104 : type(physics_state), intent(in) :: phys_state(begchunk:endchunk) 105 : type(physics_buffer_desc), pointer :: pbuf2d(:,:) 106 : 107 : #ifdef WACCMX_PHYS 108 : call ion_electron_temp_timestep_init(phys_state,pbuf2d) 109 : #endif 110 0 : end subroutine waccmx_phys_ion_elec_temp_timestep_init 111 : 112 : !------------------------------------------------------------------------------ 113 : !------------------------------------------------------------------------------ 114 0 : subroutine waccmx_phys_ion_elec_temp_tend(state, ptend, pbuf, ztodt) 115 : 116 : type(physics_state), intent(in) :: state ! physics state structure 117 : type(physics_ptend), intent(inout) :: ptend ! parameterization tendency structure 118 : type(physics_buffer_desc),pointer :: pbuf(:) ! physics buffer 119 : 120 : real(r8), intent(in) :: ztodt ! Physics time step 121 : 122 : #ifdef WACCMX_PHYS 123 : call ion_electron_temp_tend(state, ptend, pbuf, ztodt) 124 : #endif 125 0 : end subroutine waccmx_phys_ion_elec_temp_tend 126 : 127 : end module waccmx_phys_intr