Class | rad_Mars_15m |
In: |
radiation/rad_Mars_15m.f90
|
Subroutine : | |
Time : | real(DP) , intent(in ) |
DelTime : | real(DP) , intent(in ) |
xyz_Temp(0:imax-1, 1:jmax, 1:kmax) : | real(DP) , intent(in ) |
xyr_Press(0:imax-1, 1:jmax, 0:kmax) : | real(DP) , intent(in ) |
xyz_Press(0:imax-1, 1:jmax, 1:kmax) : | real(DP) , intent(in ) |
xy_SurfTemp(0:imax-1, 1:jmax) : | real(DP) , intent(in ) |
xyr_DOD067(0:imax-1, 1:jmax, 0:kmax) : | real(DP) , intent(in ) |
QeRat : | real(DP) , intent(in ) |
SSA : | real(DP) , intent(in ) |
xy_SurfEmis(0:imax-1, 1:jmax) : | real(DP) , intent(in ) |
xyr_Rad15mFlux(0:imax-1, 1:jmax, 0:kmax) : | real(DP) , intent(out) |
xyra_DelRad15mFlux(0:imax-1, 1:jmax, 0:kmax, 0:1) : | real(DP) , intent(out) |
subroutine RadMars15m( Time, DelTime, xyz_Temp, xyr_Press, xyz_Press, xy_SurfTemp, xyr_DOD067, QeRat, SSA, xy_SurfEmis, xyr_Rad15mFlux, xyra_DelRad15mFlux ) ! メッセージ出力 ! Message output ! use dc_message, only: MessageNotify real(DP) , intent(in ) :: Time real(DP) , intent(in ) :: DelTime real(DP) , intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 1:kmax) real(DP) , intent(in ) :: xyr_Press (0:imax-1, 1:jmax, 0:kmax) real(DP) , intent(in ) :: xyz_Press (0:imax-1, 1:jmax, 1:kmax) real(DP) , intent(in ) :: xy_SurfTemp (0:imax-1, 1:jmax) real(DP) , intent(out) :: xyr_Rad15mFlux (0:imax-1, 1:jmax, 0:kmax) real(DP) , intent(out) :: xyra_DelRad15mFlux(0:imax-1, 1:jmax, 0:kmax, 0:1) real(DP) , intent(in ) :: xyr_DOD067 (0:imax-1, 1:jmax, 0:kmax) real(DP) , intent(in ) :: QeRat real(DP) , intent(in ) :: SSA real(DP) , intent(in ) :: xy_SurfEmis (0:imax-1, 1:jmax) ! ! local variables ! ! 実行文 ; Executable statement ! ! 初期化 ! Initialization ! if ( .not. rad_Mars_15m_inited ) then call MessageNotify( 'E', module_name, 'This module has not been initialized.' ) end if call rad15m_lowatm_newscheme2006( Time, DelTime, xyz_Temp, xyr_Press, xyz_Press, xy_SurfTemp, xyr_DOD067, QeRat, SSA, xy_SurfEmis, xyr_Rad15mFlux, xyra_DelRad15mFlux ) end subroutine RadMars15m
Subroutine : |
This procedure input/output NAMELIST#rad_Mars_15m_nml .
subroutine RadMars15mInit ! モジュール引用 ; USE statements ! ! NAMELIST ファイル入力に関するユーティリティ ! Utilities for NAMELIST file input ! use namelist_util, only: namelist_filename, NmlutilMsg, NmlutilAryValid ! ファイル入出力補助 ! File I/O support ! use dc_iounit, only: FileOpen use ckd_module, only : ckd_input, ckdp, nband ! ! local variables ! integer:: unit_nml ! NAMELIST ファイルオープン用装置番号. ! Unit number for NAMELIST file open integer:: iostat_nml ! NAMELIST 読み込み時の IOSTAT. ! IOSTAT of NAMELIST read character(STRING) :: rad15mkg_fn character(STRING) :: rad15mnf_fn integer :: m namelist /rad_Mars_15m_nml/ rad15mkg_fn, Rad15mInt ! 実行文 ; Executable statement ! if ( rad_Mars_15m_inited ) return ! デフォルト値の設定 ! Default values settings ! rad15mkg_fn = "./kg15m" !!$ rad15mnf_fn = "./nlte15mfactor" Rad15mInt = 925.0_DP ! NAMELIST の読み込み ! NAMELIST is input ! if ( trim(namelist_filename) /= '' ) then call FileOpen( unit_nml, namelist_filename, mode = 'r' ) ! (in) rewind( unit_nml ) read( unit_nml, nml = rad_Mars_15m_nml, iostat = iostat_nml ) ! (out) close( unit_nml ) call NmlutilMsg( iostat_nml, module_name ) ! (in) end if !!$ allocate( rad_gp ( im, jm, km ) ) !!$ allocate( rad_gph ( im, jm, 0:km ) ) !!$ allocate( rad_gt ( im, jm, km ) ) !!$ allocate( rad_gts ( im, jm, 1 ) ) !!$ allocate( rad_gdod ( im, jm, 0:km ) ) nras = 1 nrps = 0 !!$ allocate( sgmh_f ( km*nvr+1 ), & !!$ & sgm_f ( km*nvr ) ) !!$ allocate( gph_f ( im, jm, km*nvr+1 ), & !!$ & gp_f ( im, jm, km*nvr ), & !!$ & gth_f ( im, jm, km*nvr+1 ) ) !!$ !!$ allocate( gvmr_f ( im, jm, km*nvr , nras + nrps ) ) !!$ allocate( mmmass_f ( im, jm, km*nvr ) ) !!$ allocate( ac_f ( im, jm, km*nvr , nras ) ) !!$ !!$ allocate( gdod_f ( im, jm, km*nvr+1 ) ) !!$ !!$ allocate( xyra_Trans (0:imax-1, 1:jmax, 0:kmax, 0:kmax) ) !!$ allocate( pfh_f ( im, jm, km*nvr+1 ) ) !!$ !!$ allocate( uwflh_f ( im, jm, km*nvr+1 ), & !!$ & dwflh_f ( im, jm, km*nvr+1 ) ) allocate( trans_i2i_toa(0:imax-1, 1:jmax, 0:kmax), trans_i2i_boa(0:imax-1, 1:jmax, 0:kmax), trans_i2i_s (0:imax-1, 1:jmax, 0:kmax), trans_i2m_lli(0:imax-1, 1:jmax, 0:kmax, 1:kmax), trans_i2m_uli(0:imax-1, 1:jmax, 0:kmax, 1:kmax) ) trans_i2i_toa(:,:,:) = 1.0d100 trans_i2i_boa(:,:,:) = 1.0d100 trans_i2i_s (:,:,:) = 1.0d100 trans_i2m_lli(:,:,:,:) = 1.0d100 trans_i2m_uli(:,:,:,:) = 1.0d100 ! ! check ! if( nras .ne. 1 ) then write( 6, * ) 'nras is not 1.' write( 6, * ) nras stop end if call ckd_input( rad15mkg_fn ) ! check if( nband /= 1 ) then write( 6, * ) ' nband is not 1.' write( 6, * ) nband stop end if nwnl = 0 do m = 1, nband nwnl = nwnl + ckdp( m ) % ng end do !!$ call increase_vreso_boundary( km, nvr, sgmh, sgmh_f, "log" ) !!$ do k = 1, km * nvr !!$ sgm_f( k ) = sqrt( sgmh_f( k ) * sgmh_f( k+1 ) ) !!$ end do !!$ call rad15m_readnlte15mfac( rad15mnf_fn ) ! ! This routine must be called after rad15m_readkgtbl. ! !!$ call rad15m_rv_read( time ) !!$ call rad15m_rv_read_newscheme2006( time ) rad_Mars_15m_inited = .true. end subroutine RadMars15mInit
Variable : | |||
rad_Mars_15m_inited = .false. : | logical, save, public
|
Subroutine : | |
xyz_Press(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out) |
subroutine calc_lnp( xyz_Press, xyz_lnPress ) real(DP), intent(in ) :: xyz_Press (0:imax-1, 1:jmax, 1:kmax) real(DP), intent(out) :: xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) ! ! local variables ! xyz_lnPress = log( xyz_Press + 1.0d-20 ) end subroutine calc_lnp
Subroutine : | |||
dlambda : | real(DP), intent(in ) | ||
xy_SurfEmis(0:imax-1, 1:jmax) : | real(DP), intent(in ) | ||
trans_i2i_toa(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in )
| ||
trans_i2i_boa(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in )
| ||
trans_i2i_s(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in )
| ||
trans_i2m_lli(0:imax-1, 1:jmax, 0:kmax, 1:kmax) : | real(DP), intent(in )
| ||
trans_i2m_uli(0:imax-1, 1:jmax, 0:kmax, 1:kmax) : | real(DP), intent(in )
| ||
xyr_PF(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in ) | ||
xy_SurfPF(0:imax-1, 1:jmax) : | real(DP), intent(in ) | ||
netflh(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(out) |
subroutine calc_rteq_use_meantrans_arr3d( dlambda, xy_SurfEmis, trans_i2i_toa, trans_i2i_boa, trans_i2i_s, trans_i2m_lli, trans_i2m_uli, xyr_PF, xy_SurfPF, netflh ) ! 物理・数学定数設定 ! Physical and mathematical constants settings ! use constants0, only: PI ! $ \pi $ . ! 円周率. Circular constant real(DP), intent(in ) :: dlambda real(DP), intent(in ) :: xy_SurfEmis(0:imax-1, 1:jmax) real(DP), intent(in ) :: trans_i2i_toa(0:imax-1, 1:jmax, 0:kmax) ! f_{1/2} T_{k+1/2,1/2} real(DP), intent(in ) :: trans_i2i_boa(0:imax-1, 1:jmax, 0:kmax) ! f_{km+1/2} T_{k+1/2,km+1/2} real(DP), intent(in ) :: trans_i2i_s (0:imax-1, 1:jmax, 0:kmax) ! f_{s} T_{k+1/2,km+1/2} real(DP), intent(in ) :: trans_i2m_lli(0:imax-1, 1:jmax, 0:kmax, 1:kmax) ! upper layer interface real(DP), intent(in ) :: trans_i2m_uli(0:imax-1, 1:jmax, 0:kmax, 1:kmax) ! lower layer interface real(DP), intent(in ) :: xyr_PF (0:imax-1, 1:jmax, 0:kmax) real(DP), intent(in ) :: xy_SurfPF(0:imax-1, 1:jmax) real(DP), intent(out) :: netflh(0:imax-1, 1:jmax, 0:kmax) ! ! local variables ! integer :: i, j, k, k2 do k = 0, kmax do j = 1, jmax do i = 0, imax-1 netflh(i,j,k) = 0.0d0 end do end do end do do k = 0, kmax do j = 1, jmax do i = 0, imax-1 netflh(i,j,k) = netflh(i,j,k) + PI * xy_SurfEmis(i,j) * xy_SurfPF(i,j) * dlambda * trans_i2i_s (i,j,k) - PI * xyr_PF(i,j,0 ) * dlambda * trans_i2i_boa(i,j,k) + PI * xyr_PF(i,j,kmax) * dlambda * trans_i2i_toa(i,j,k) end do end do do k2 = 1, kmax do j = 1, jmax do i = 0, imax-1 netflh(i,j,k) = netflh(i,j,k) - PI * xyr_PF(i,j,k2 ) * dlambda * trans_i2m_uli(i,j,k,k2) + PI * xyr_PF(i,j,k2-1) * dlambda * trans_i2m_lli(i,j,k,k2) end do end do end do end do end subroutine calc_rteq_use_meantrans_arr3d
Subroutine : | |
nras : | integer , intent(in ) |
nrps : | integer , intent(in ) |
xyr_Press(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in ) |
xyza_VMR(0:imax-1, 1:jmax, 1:kmax, 1:nras+nrps) : | real(DP), intent(in ) |
xyz_MMMass(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyza_AC(0:imax-1, 1:jmax, 1:kmax, 1:nras) : | real(DP), intent(in ) |
xyr_DOD(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in ) |
xyra_Trans(0:imax-1, 1:jmax, 0:kmax, 0:kmax) : | real(DP), intent(out) |
subroutine calc_trans_mp_arr3d( nras, nrps, xyr_Press, xyza_VMR, xyz_MMMass, xyza_AC, xyr_DOD, xyra_Trans ) use constants , only : Grav integer , intent(in ) :: nras integer , intent(in ) :: nrps real(DP), intent(in ) :: xyr_Press(0:imax-1, 1:jmax, 0:kmax) real(DP), intent(in ) :: xyza_VMR (0:imax-1, 1:jmax, 1:kmax, 1:nras+nrps) real(DP), intent(in ) :: xyz_MMMass(0:imax-1, 1:jmax, 1:kmax) real(DP), intent(in ) :: xyza_AC(0:imax-1, 1:jmax, 1:kmax, 1:nras) real(DP), intent(in ) :: xyr_DOD(0:imax-1, 1:jmax, 0:kmax) real(DP), intent(out) :: xyra_Trans (0:imax-1, 1:jmax, 0:kmax, 0:kmax) ! ! local variables ! real(DP) :: xyz_DelOpDep(0:imax-1, 1:jmax, 1:kmax) real(DP) :: xyz_DelTrans(0:imax-1, 1:jmax, 1:kmax) real(DP) :: xy_Trans(0:imax-1, 1:jmax) real(DP), parameter :: DifFac = 1.66_DP integer :: k, k2, n integer :: ks, ke xyra_Trans = 1.0d100 xyz_DelOpDep = 0.0_DP do n = 1, nras do k = 1, kmax xyz_DelOpDep(:,:,k) = xyz_DelOpDep(:,:,k) + xyza_AC(:,:,k,n) * xyza_VMR(:,:,k,n) / xyz_MMMass(:,:,k) * ( xyr_Press(:,:,k-1) - xyr_Press(:,:,k) ) / Grav end do end do ! ! add dust optical depth ! do k = 1, kmax xyz_DelOpDep(:,:,k) = xyz_DelOpDep(:,:,k) + xyr_DOD(:,:,k-1) - xyr_DOD(:,:,k) end do xyz_DelTrans = exp( - xyz_DelOpDep * DifFac ) ! ! transmission for "zero thickness" layer ( = 1.0 ) ! do ks = 0, kmax ke = ks xyra_Trans(:,:,ks,ke) = 1.0_DP end do do ks = 0, kmax xy_Trans = 1.0_DP do ke = ks+1, kmax xy_Trans = xy_Trans * xyz_DelTrans(:,:,ke) xyra_Trans(:,:,ks,ke) = xy_Trans end do end do do ks = 0, kmax do ke = 0, ks-1 xyra_Trans(:,:,ks,ke) = xyra_Trans(:,:,ke,ks) end do end do end subroutine calc_trans_mp_arr3d
Subroutine : | |
ks : | integer , intent(in ) |
ke : | integer , intent(in ) |
xyz_Temp(0:imax-1, 1:jmax, ks:ke) : | real(DP), intent(in ) |
xyz_lnPress(0:imax-1, 1:jmax, ks:ke) : | real(DP), intent(in ) |
iband : | integer , intent(in ) |
xyz_jj(0:imax-1, 1:jmax, ks:ke) : | integer , intent(out) |
xyz_kk(0:imax-1, 1:jmax, ks:ke) : | integer , intent(out) |
subroutine findindices( ks, ke, xyz_Temp, xyz_lnPress, iband, xyz_jj, xyz_kk ) use ckd_module, only : ckdp integer , intent(in ) :: ks integer , intent(in ) :: ke real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, ks:ke) real(DP), intent(in ) :: xyz_lnPress(0:imax-1, 1:jmax, ks:ke) integer , intent(in ) :: iband integer , intent(out) :: xyz_jj(0:imax-1, 1:jmax, ks:ke) integer , intent(out) :: xyz_kk(0:imax-1, 1:jmax, ks:ke) ! ! local variables ! integer :: i, j, k, l do k = ks, ke do j = 1, jmax do i = 0, imax-1 xyz_kk(i,j,k) = 1 end do end do end do do l = 1+1, ckdp( iband ) % nt - 1 do k = ks, ke do j = 1, jmax do i = 0, imax-1 if( ckdp( iband ) % t( l ) .le. xyz_Temp(i,j,k) ) xyz_kk(i,j,k) = l end do end do end do end do do k = ks, ke do j = 1, jmax do i = 0, imax-1 xyz_jj(i,j,k) = 1 end do end do end do do l = 1+1, ckdp( iband ) % nlnp - 1 do k = ks, ke do j = 1, jmax do i = 0, imax-1 if( ckdp( iband ) % lnp( l ) <= xyz_lnPress(i,j,k) ) xyz_jj(i,j,k) = l end do end do end do end do end subroutine findindices
Subroutine : | |
xy_Temp(0:imax-1, 1:jmax) : | real(DP), intent(in ) |
xy_lnPress(0:imax-1, 1:jmax) : | real(DP), intent(in ) |
iband : | integer , intent(in ) |
xy_jj(0:imax-1, 1:jmax) : | integer , intent(out) |
xy_kk(0:imax-1, 1:jmax) : | integer , intent(out) |
subroutine findindices2D( xy_Temp, xy_lnPress, iband, xy_jj, xy_kk ) real(DP), intent(in ) :: xy_Temp (0:imax-1, 1:jmax) real(DP), intent(in ) :: xy_lnPress(0:imax-1, 1:jmax) integer , intent(in ) :: iband integer , intent(out) :: xy_jj(0:imax-1, 1:jmax) integer , intent(out) :: xy_kk(0:imax-1, 1:jmax) ! ! local variables ! real(DP) :: xyz_Temp (0:imax-1, 1:jmax, 1:1) real(DP) :: xyz_lnPress(0:imax-1, 1:jmax, 1:1) integer :: xyz_jj(0:imax-1, 1:jmax, 1:1) integer :: xyz_kk(0:imax-1, 1:jmax, 1:1) xyz_Temp (:,:,1) = xy_Temp xyz_lnPress(:,:,1) = xy_lnPress call findindices( 1, 1, xyz_Temp, xyz_lnPress, iband, xyz_jj, xyz_kk ) xy_jj = xyz_jj(:,:,1) xy_kk = xyz_kk(:,:,1) end subroutine findindices2D
Subroutine : | |
xyz_Temp(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
iband : | integer , intent(in ) |
xyz_jj(0:imax-1, 1:jmax, 1:kmax) : | integer , intent(out) |
xyz_kk(0:imax-1, 1:jmax, 1:kmax) : | integer , intent(out) |
subroutine findindices3D( xyz_Temp, xyz_lnPress, iband, xyz_jj, xyz_kk ) real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 1:kmax) real(DP), intent(in ) :: xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: iband integer , intent(out) :: xyz_jj(0:imax-1, 1:jmax, 1:kmax) integer , intent(out) :: xyz_kk(0:imax-1, 1:jmax, 1:kmax) ! ! local variables ! call findindices( 1, kmax, xyz_Temp, xyz_lnPress, iband, xyz_jj, xyz_kk ) end subroutine findindices3D
Subroutine : | |
xyz_Temp(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyz_jj(0:imax-1, 1:jmax, 1:kmax) : | integer , intent(in ) |
xyz_kk(0:imax-1, 1:jmax, 1:kmax) : | integer , intent(in ) |
ig : | integer , intent(in ) |
iband : | integer , intent(in ) |
xyz_AC(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out) |
subroutine getlnac_givenindices( xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyz_AC ) use ckd_module, only : ckdp real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 1:kmax) real(DP), intent(in ) :: xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: xyz_jj (0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: xyz_kk (0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: ig integer , intent(in ) :: iband real(DP), intent(out) :: xyz_AC (0:imax-1, 1:jmax, 1:kmax) ! ! local variables ! real(DP) :: lnac1, lnac2 integer :: i, j, k do k = 1, kmax do j = 1, jmax do i = 0, imax-1 lnac1 = ( ckdp(iband)%lnac( ig, xyz_jj(i,j,k) , xyz_kk(i,j,k)+1 ) - ckdp(iband)%lnac( ig, xyz_jj(i,j,k) , xyz_kk(i,j,k) ) ) / ( ckdp(iband)%t( xyz_kk(i,j,k)+1 ) - ckdp(iband)%t( xyz_kk(i,j,k) ) ) * ( xyz_Temp(i,j,k) - ckdp( iband ) % t( xyz_kk(i,j,k) ) ) + ckdp(iband)%lnac( ig, xyz_jj(i,j,k) , xyz_kk(i,j,k) ) lnac2 = ( ckdp(iband)%lnac( ig, xyz_jj(i,j,k)+1, xyz_kk(i,j,k)+1 ) - ckdp(iband)%lnac( ig, xyz_jj(i,j,k)+1, xyz_kk(i,j,k) ) ) / ( ckdp(iband)%t( xyz_kk(i,j,k)+1 ) - ckdp(iband)%t( xyz_kk(i,j,k) ) ) * ( xyz_Temp(i,j,k) - ckdp( iband ) % t( xyz_kk(i,j,k) ) ) + ckdp(iband)%lnac( ig, xyz_jj(i,j,k)+1, xyz_kk(i,j,k) ) xyz_AC(i,j,k) = ( lnac2 - lnac1 ) / ( ckdp( iband ) % lnp( xyz_jj(i,j,k)+1 ) - ckdp( iband ) % lnp( xyz_jj(i,j,k) ) ) * ( xyz_lnPress(i,j,k) - ckdp( iband ) % lnp( xyz_jj(i,j,k) ) ) + lnac1 end do end do end do end subroutine getlnac_givenindices
Subroutine : | |
xyz_Temp(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(in ) |
xy_SurfTemp(0:imax-1, 1:jmax) : | real(DP), intent(in ) |
iband : | integer , intent(in ) |
xyr_PF(0:imax-1, 1:jmax, 0:kmax) : | real(DP), intent(out) |
xy_SurfPF(0:imax-1, 1:jmax) : | real(DP), intent(out) |
subroutine getpf_arr3d_norat( xyz_Temp, xy_SurfTemp, iband, xyr_PF, xy_SurfPF ) use planck_func, only : Integ_PF_GQ_Array3D, Integ_PF_GQ_Array2D use ckd_module, only : ckdp real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 0:kmax) real(DP), intent(in ) :: xy_SurfTemp(0:imax-1, 1:jmax) integer , intent(in ) :: iband real(DP), intent(out) :: xyr_PF (0:imax-1, 1:jmax, 0:kmax) real(DP), intent(out) :: xy_SurfPF(0:imax-1, 1:jmax) ! ! local variables ! integer :: ncp_pfint integer :: i, j, k ncp_pfint = 5 call Integ_PF_GQ_Array3D( ckdp(iband)%wnbnds(1), ckdp(iband)%wnbnds(2), ncp_pfint, 0, imax-1, 1, jmax, 0, kmax, xyz_Temp, xyr_PF ) call Integ_PF_GQ_Array2D( ckdp(iband)%wnbnds(1), ckdp(iband)%wnbnds(2), ncp_pfint, 0, imax-1, 1, jmax, xy_SurfTemp, xy_SurfPF ) do k = 0, kmax do j = 1, jmax do i = 0, imax-1 xyr_PF(i,j,k) = xyr_PF(i,j,k) / ( ckdp(iband)%wnbnds(2) - ckdp(iband)%wnbnds(1) ) end do end do end do do j = 1, jmax do i = 0, imax-1 xy_SurfPF(i,j) = xy_SurfPF(i,j) / ( ckdp(iband)%wnbnds(2) - ckdp(iband)%wnbnds(1) ) end do end do end subroutine getpf_arr3d_norat
Subroutine : | |
ks : | integer , intent(in ) |
ke : | integer , intent(in ) |
xyz_Temp(0:imax-1, 1:jmax, ks:ke) : | real(DP), intent(in ) |
xyz_lnPress(0:imax-1, 1:jmax, ks:ke) : | real(DP), intent(in ) |
xyz_jj(0:imax-1, 1:jmax, ks:ke) : | integer , intent(in ) |
xyz_kk(0:imax-1, 1:jmax, ks:ke) : | integer , intent(in ) |
ig : | integer , intent(in ) |
iband : | integer , intent(in ) |
xyz_PFRat(0:imax-1, 1:jmax, ks:ke) : | real(DP), intent(out) |
subroutine getpfr_givenindices( ks, ke, xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyz_PFRat ) use ckd_module, only: ckdp integer , intent(in ) :: ks integer , intent(in ) :: ke real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, ks:ke) real(DP), intent(in ) :: xyz_lnPress(0:imax-1, 1:jmax, ks:ke) integer , intent(in ) :: xyz_jj (0:imax-1, 1:jmax, ks:ke) integer , intent(in ) :: xyz_kk (0:imax-1, 1:jmax, ks:ke) integer , intent(in ) :: ig, iband real(DP), intent(out) :: xyz_PFRat(0:imax-1, 1:jmax, ks:ke) ! ! local variables ! real(DP) :: pfr1, pfr2 integer :: i, j, k, l do k = ks, ke do j = 1, jmax do i = 0, imax-1 pfr1 = ( ckdp(iband)%pfr( ig, xyz_jj(i,j,k) , xyz_kk(i,j,k)+1 ) - ckdp(iband)%pfr( ig, xyz_jj(i,j,k) , xyz_kk(i,j,k) ) ) / ( ckdp(iband)%t( xyz_kk(i,j,k)+1 ) - ckdp(iband)%t( xyz_kk(i,j,k) ) ) * ( xyz_Temp(i,j,k) - ckdp( iband ) % t( xyz_kk(i,j,k) ) ) + ckdp(iband)%pfr( ig, xyz_jj(i,j,k) , xyz_kk(i,j,k) ) pfr2 = ( ckdp(iband)%pfr( ig, xyz_jj(i,j,k)+1, xyz_kk(i,j,k)+1 ) - ckdp(iband)%pfr( ig, xyz_jj(i,j,k)+1, xyz_kk(i,j,k) ) ) / ( ckdp(iband)%t( xyz_kk(i,j,k)+1 ) - ckdp(iband)%t( xyz_kk(i,j,k) ) ) * ( xyz_Temp(i,j,k) - ckdp( iband ) % t( xyz_kk(i,j,k) ) ) + ckdp(iband)%pfr( ig, xyz_jj(i,j,k)+1, xyz_kk(i,j,k) ) xyz_PFRat(i,j,k) = ( pfr2 - pfr1 ) / ( ckdp( iband ) % lnp( xyz_jj(i,j,k)+1 ) - ckdp( iband ) % lnp( xyz_jj(i,j,k) ) ) * ( xyz_lnPress(i,j,k) - ckdp( iband ) % lnp( xyz_jj(i,j,k) ) ) + pfr1 end do end do end do end subroutine getpfr_givenindices
Subroutine : | |
xy_Temp(0:imax-1, 1:jmax) : | real(DP), intent(in ) |
xy_lnPress(0:imax-1, 1:jmax) : | real(DP), intent(in ) |
xy_jj(0:imax-1, 1:jmax) : | integer , intent(in ) |
xy_kk(0:imax-1, 1:jmax) : | integer , intent(in ) |
ig : | integer , intent(in ) |
iband : | integer , intent(in ) |
xy_PFRat(0:imax-1, 1:jmax) : | real(DP), intent(out) |
subroutine getpfr_givenindices2D( xy_Temp, xy_lnPress, xy_jj, xy_kk, ig, iband, xy_PFRat ) real(DP), intent(in ) :: xy_Temp (0:imax-1, 1:jmax) real(DP), intent(in ) :: xy_lnPress(0:imax-1, 1:jmax) integer , intent(in ) :: xy_jj (0:imax-1, 1:jmax) integer , intent(in ) :: xy_kk (0:imax-1, 1:jmax) integer , intent(in ) :: ig, iband real(DP), intent(out) :: xy_PFRat (0:imax-1, 1:jmax) ! ! local variables ! real(DP) :: xyz_Temp (0:imax-1, 1:jmax, 1:1) real(DP) :: xyz_lnPress(0:imax-1, 1:jmax, 1:1) integer :: xyz_jj (0:imax-1, 1:jmax, 1:1) integer :: xyz_kk (0:imax-1, 1:jmax, 1:1) real(DP) :: xyz_PFRat(0:imax-1, 1:jmax, 1:1) xyz_Temp (:,:,1) = xy_Temp xyz_lnPress(:,:,1) = xy_lnPress xyz_jj (:,:,1) = xy_jj xyz_kk (:,:,1) = xy_kk call getpfr_givenindices( 1, 1, xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyz_PFRat ) xy_PFRat(:,:) = xyz_PFRat(:,:,1) end subroutine getpfr_givenindices2D
Subroutine : | |
xyz_Temp(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in ) |
xyz_jj(0:imax-1, 1:jmax, 1:kmax) : | integer , intent(in ) |
xyz_kk(0:imax-1, 1:jmax, 1:kmax) : | integer , intent(in ) |
ig : | integer , intent(in ) |
iband : | integer , intent(in ) |
xyz_PFRat(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out) |
subroutine getpfr_givenindices3D( xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyz_PFRat ) use ckd_module, only: ckdp real(DP), intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 1:kmax) real(DP), intent(in ) :: xyz_lnPress(0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: xyz_jj (0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: xyz_kk (0:imax-1, 1:jmax, 1:kmax) integer , intent(in ) :: ig, iband real(DP), intent(out) :: xyz_PFRat(0:imax-1, 1:jmax, 1:kmax) ! ! local variables ! call getpfr_givenindices( 1, kmax, xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyz_PFRat ) end subroutine getpfr_givenindices3D
Subroutine : | |
m : | integer, intent(in ) |
ig : | integer, intent(out) |
iband : | integer, intent(out) |
subroutine m2ckdpindices( m, ig, iband ) use ckd_module, only : ckdp, nband integer, intent(in ) :: m integer, intent(out) :: ig integer, intent(out) :: iband ! ! local variables ! integer :: num ! The comments below will be removed. num = 0 do iband = 1, nband if( num + ckdp( iband ) % ng .ge. m ) exit num = num + ckdp( iband ) % ng end do if( iband > nband ) then write( 6, * ) 'Unexpected m' write( 6, * ) m stop end if ig = m - num if( ig > ckdp( iband ) % ng ) then write( 6, * ) 'Unexpected ig' write( 6, * ) iband, ig stop end if end subroutine m2ckdpindices
Constant : | |||
module_name = ‘rad_Mars_15m‘ : | character(*), parameter
|
Subroutine : | |
Time : | real(DP) , intent(in ) |
DelTime : | real(DP) , intent(in ) |
xyz_Temp(0:imax-1, 1:jmax, 1:kmax) : | real(DP) , intent(in ) |
xyr_Press(0:imax-1, 1:jmax, 0:kmax) : | real(DP) , intent(in ) |
xyz_Press(0:imax-1, 1:jmax, 1:kmax) : | real(DP) , intent(in ) |
xy_SurfTemp(0:imax-1, 1:jmax) : | real(DP) , intent(in ) |
xyr_DOD067(0:imax-1, 1:jmax, 0:kmax) : | real(DP) , intent(in ) |
QeRat : | real(DP) , intent(in ) |
SSA : | real(DP) , intent(in ) |
xy_SurfEmis(0:imax-1, 1:jmax) : | real(DP) , intent(in ) |
xyr_Rad15mFlux(0:imax-1, 1:jmax, 0:kmax) : | real(DP) , intent(out) |
xyra_DelRad15mFlux(0:imax-1, 1:jmax, 0:kmax, 0:1) : | real(DP) , intent(out) |
subroutine rad15m_lowatm_newscheme2006( Time, DelTime, xyz_Temp, xyr_Press, xyz_Press, xy_SurfTemp, xyr_DOD067, QeRat, SSA, xy_SurfEmis, xyr_Rad15mFlux, xyra_DelRad15mFlux ) use constants , only : Grav, CpDry ! メッセージ出力 ! Message output ! use dc_message, only: MessageNotify use ckd_module, only : ckdp real(DP) , intent(in ) :: Time real(DP) , intent(in ) :: DelTime real(DP) , intent(in ) :: xyr_Press(0:imax-1, 1:jmax, 0:kmax) real(DP) , intent(in ) :: xyz_Press(0:imax-1, 1:jmax, 1:kmax) real(DP) , intent(in ) :: xyz_Temp (0:imax-1, 1:jmax, 1:kmax) real(DP) , intent(in ) :: xy_SurfTemp(0:imax-1, 1:jmax) real(DP) , intent(in ) :: xyr_DOD067(0:imax-1, 1:jmax, 0:kmax) real(DP) , intent(in ) :: QeRat real(DP) , intent(in ) :: SSA real(DP) , intent(in ) :: xy_SurfEmis(0:imax-1, 1:jmax) real(DP) , intent(out) :: xyr_Rad15mFlux (0:imax-1, 1:jmax, 0:kmax) real(DP) , intent(out) :: xyra_DelRad15mFlux(0:imax-1, 1:jmax, 0:kmax, 0:1) ! ! local variables ! real(DP) :: xyr_Temp (0:imax-1, 1:jmax, 0:kmax) real(DP) :: xyz_MMMass(0:imax-1, 1:jmax, 1:kmax) real(DP) :: xyza_VMR(0:imax-1, 1:jmax, 1:kmax, 1:nras+nrps ) real(DP) :: xyza_AC (0:imax-1, 1:jmax, 1:kmax, 1:nras ) real(DP) :: xyr_PF (0:imax-1, 1:jmax, 0:kmax) real(DP) :: xy_SurfPF(0:imax-1, 1:jmax) real(DP) :: xy_DPFDT(0:imax-1, 1:jmax) real(DP) :: weight_integral integer :: ig, iband integer :: i, j, k, l, m, n integer :: k2 ! ! dod : dust optical depth ! real(DP) :: xyr_DOD(0:imax-1, 1:jmax, 0:kmax) ! ! local variables for pfint ! real(DP) :: MinPress real(DP) :: MaxPress integer :: iband_reserve real(DP) :: xy_lnPs (0:imax-1, 1:jmax) real(DP) :: xyz_lnPress(0:imax-1, 1:jmax, 1:kmax ) integer :: xyz_jj(0:imax-1, 1:jmax, 1:kmax) integer :: xyz_kk(0:imax-1, 1:jmax, 1:kmax) integer :: xy_jj (0:imax-1, 1:jmax) integer :: xy_kk (0:imax-1, 1:jmax) ! Surface temperature for calculation of gradient of radiative flux real(DP) :: xy_SurfTemp_for_gradcalc(0:imax-1, 1:jmax) ! Indices for calculation of gradient of radiative flux integer :: jjs_for_gradcalc(0:imax-1, 1:jmax), kks_for_gradcalc(0:imax-1, 1:jmax) real(DP) :: xyr_PFRat (0:imax-1, 1:jmax, 0:kmax) real(DP) :: xyz_PFRat (0:imax-1, 1:jmax, 1:kmax) real(DP) :: xy_SurfPFRat(0:imax-1, 1:jmax) logical, save :: FlagCalcTrans data FlagCalcTrans / .false. / ! 初期化 ! Initialization ! if ( .not. rad_Mars_15m_inited ) then call MessageNotify( 'E', module_name, 'This module has not been initialized.' ) end if k = 0 do j = 1, jmax do i = 0, imax-1 !!$ gth(i,j,k) = gt(i,j,k+1) xyr_Temp(i,j,k) = ( xyz_Temp(i,j,2) - xyz_Temp(i,j,1) ) / log( xyz_Press(i,j,2) / xyz_Press(i,j,1) ) * log( xyr_Press(i,j,k) / xyz_Press(i,j,1) ) + xyz_Temp(i,j,1) end do end do do k = 1, kmax-1 do j = 1, jmax do i = 0, imax-1 xyr_Temp(i,j,k) = ( xyz_Temp(i,j,k+1) - xyz_Temp(i,j,k) ) / log( xyz_Press(i,j,k+1) / xyz_Press(i,j,k) ) * log( xyr_Press(i,j,k ) / xyz_Press(i,j,k) ) + xyz_Temp(i,j,k) end do end do end do k = kmax do j = 1, jmax do i = 0, imax-1 xyr_Temp(i,j,k) = xyz_Temp(i,j,k) end do end do !!$ do k = 1, km*nvr+1 !!$ do ij = ijs, ije !!$ gph_f( ij, 1, k ) = sgmh_f( k ) * gph( ij, 1, km+1 ) !!$ end do !!$ end do !!$ call calc_lnp( im, jm, km*nvr+1, gph_f , glnph_f , ijs, ije ) !!$ !!$ call increase_vreso_boundary_arr3d( im, jm, km, nvr, gth, gth_f, & !!$ & "linear", ijs, ije ) if ( .not. FlagCalcTrans ) then if ( Time - dble( int( Time / Rad15mInt ) ) * Rad15mInt < DelTime ) then call MessageNotify( 'M', module_name, 'Transmittance is not saved, but criterion for transmittance calculation is met.' ) else call MessageNotify( 'M', module_name, 'Transmittance is not saved, and criterion for transmittance calculation ' // 'is not met. However, transmittance will be calculated.' ) end if end if ! ! Calculation of transmission ! if( ( .not. FlagCalcTrans ) .or. ( Time - dble( int( Time / Rad15mInt ) ) * Rad15mInt ) < DelTime ) then FlagCalcTrans = .true. !!$ call MessageNotify( 'M', module_name, 'Transmission is calculated.' ) ! ! Calculation of "absorption" dust optical depth ! This formulation is obtained from Forget et al. [1999]. ! do k = 0, kmax do j = 1, jmax do i = 0, imax-1 xyr_DOD(i,j,k) = ( 1.0d0 - SSA ) * xyr_DOD067(i,j,k) * QeRat end do end do end do !!$ call increase_vreso_boundary_arr3d( im, jm, km, nvr, gdod, gdod_f, & !!$ & "log", ijs, ije ) ! ! check pressure ! MinPress = 1.0d100 MaxPress = 0.0d0 do j = 1, jmax do i = 0, imax-1 MinPress = min( MinPress, xyz_Press(i,j,kmax) ) MaxPress = max( MaxPress, xyz_Press(i,j,1 ) ) end do end do if( ckdp(1)%lnp(1) > log(MinPress) ) then write( 6, * ) 'MARS: pressure is too small.' write( 6, * ) MinPress, exp(ckdp(1)%lnp(1)) stop end if if( ckdp(1)%lnp(ckdp(1)%nlnp) .lt. log(MaxPress) ) then write( 6, * ) 'MARS: pressure is too large.' write( 6, * ) MaxPress, exp(ckdp(1)%lnp(ckdp(1)%nlnp)) stop end if xyz_MMMass = 43.5d0 * AMU do n = 1, nras + nrps do k = 1, kmax do j = 1, jmax do i = 0, imax-1 xyza_VMR(i,j,k,n) = VMRCO2 end do end do end do end do !!$ do n = 1, nras + nrps !!$ call increase_vreso_b2m_arr3d( im, jm, km, nvr, & !!$ & gvmrh(:,:,:,n), gvmr_f(:,:,:,n), "log", & !!$ & ijs, ije ) !!$ end do !!$ call increase_vreso_b2m_arr3d( im, jm, km, nvr, & !!$ & mmmassh, mmmass_f, "linear", & !!$ & ijs, ije ) !!$ call calc_lnp( im, jm, km+1 , gph , glnph , ijs, ije ) call calc_lnp( xyz_Press, xyz_lnPress ) xy_lnPs(:,:) = log( xyr_Press(:,:,0) ) ! ! initialization ! do k = 0, kmax do j = 1, jmax do i = 0, imax-1 trans_i2i_toa(i,j,k) = 0.0d0 ! f_{1/2} T_{k+1/2,1/2} trans_i2i_boa(i,j,k) = 0.0d0 ! f_{km+1/2} T_{k+1/2,km+1/2} trans_i2i_s (i,j,k) = 0.0d0 ! f_{s} T_{k+1/2,km+1/2} end do end do end do do k2 = 1, kmax do k = 0, kmax do j = 1, jmax do i = 0, imax-1 trans_i2m_uli(i,j,k,k2) = 0.0d0 trans_i2m_lli(i,j,k,k2) = 0.0d0 end do end do end do end do ! ! loop for wavenumber ! iband_reserve = 0 do m = 1, nwnl call m2ckdpindices( m, ig, iband ) if( iband .ne. iband_reserve ) then call findindices3D( xyz_Temp, xyz_lnPress, iband, xyz_jj, xyz_kk ) call findindices2D( xy_SurfTemp, xy_lnPs, iband, xy_jj, xy_kk ) iband_reserve = iband end if ! IMPORTANT! ! This loop for n is confusing. ! We have to reconsider about it. ! Maybe, the component of ckdp structure has to be reconsidered. ! Now, it cannot include multiple radiatively active species. ! (yot, 2010/09/12) ! do n = 1, nras call getlnac_givenindices( xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyza_AC(:,:,:,n) ) end do do n = 1, nras xyza_AC(:,:,:,n) = exp( xyza_AC(:,:,:,n) ) end do !!$ do n = 1, nras !!$ call increase_vreso_b2m_arr3d( im, jm, km, nvr, & !!$ & ach(:,:,:,n), ac_f(:,:,:,n), "log", & !!$ & ijs, ije ) !!$ end do call calc_trans_mp_arr3d( nras, nrps, xyr_Press, xyza_VMR, xyz_MMMass, xyza_AC, xyr_DOD, xyra_Trans ) call getpfr_givenindices3D( xyz_Temp, xyz_lnPress, xyz_jj, xyz_kk, ig, iband, xyz_PFRat ) xyr_PFRat(:,:,0) = xyz_PFRat(:,:,1) do k = 1, kmax-1 xyr_PFRat(:,:,k) = ( xyz_PFRat(:,:,k) + xyz_PFRat(:,:,k+1) ) * 0.5_DP end do xyr_PFRat(:,:,kmax) = xyz_PFRat(:,:,kmax) call getpfr_givenindices2D( xy_SurfTemp, xy_lnPs, xy_jj, xy_kk, ig, iband, xy_SurfPFRat ) do k = 0, kmax do j = 1, jmax do i = 0, imax-1 trans_i2i_toa(i,j,k) = trans_i2i_toa(i,j,k) + xyra_Trans(i,j,k,kmax) * xyr_PFRat(i,j,kmax) * ckdp(iband)%weight(ig) trans_i2i_boa(i,j,k) = trans_i2i_boa(i,j,k) + xyra_Trans(i,j,k,0) * xyr_PFRat(i,j,0) * ckdp(iband)%weight(ig) trans_i2i_s (i,j,k) = trans_i2i_s (i,j,k) + xyra_Trans(i,j,k,0) * xy_SurfPFRat(i,j) * ckdp(iband)%weight(ig) end do end do end do do k2 = 1, kmax do k = 0, kmax do j = 1, jmax do i = 0, imax-1 trans_i2m_uli(i,j,k,k2) = trans_i2m_uli(i,j,k,k2) + ( xyra_Trans(i,j,k,k2-1) + xyra_Trans(i,j,k,k2) ) * 0.5d0 * xyr_PFRat(i,j,k2 ) * ckdp(iband)%weight(ig) trans_i2m_lli(i,j,k,k2) = trans_i2m_lli(i,j,k,k2) + ( xyra_Trans(i,j,k,k2-1) + xyra_Trans(i,j,k,k2) ) * 0.5d0 * xyr_PFRat(i,j,k2-1) * ckdp(iband)%weight(ig) end do end do end do end do end do !!$ call rad15m_rv_put_newscheme2006( time, gt, gph, gp, gts, gdod, ijs, ije ) else if ( trans_i2i_toa(0,1,1) > 1.0d99 ) then write( 6, * ) 'transmission function would not be calculated.' stop end if end if ! Is this OK? iband = 1 call getpf_arr3d_norat( xyr_Temp, xy_SurfTemp, iband, xyr_PF, xy_SurfPF ) call calc_rteq_use_meantrans_arr3d( ( ckdp(iband)%wnbnds(2) - ckdp(iband)%wnbnds(1) ), xy_SurfEmis, trans_i2i_toa, trans_i2i_boa, trans_i2i_s, trans_i2m_lli, trans_i2m_uli, xyr_PF, xy_SurfPF, xyr_Rad15mFlux ) do l = 0, 1 do k = 0, kmax do j = 1, jmax do i = 0, imax-1 xyra_DelRad15mFlux(i,j,k,l) = 0.0_DP end do end do end do end do !!$ do k = kmax, 0, -1 !!$ write( 6, * ) gph(0,1,k), gr15mnetflh(0,1,k) !!$ end do !!$ stop !!$ ij = ( ije - ijs + 1 ) / 2 !!$ k = km + 1 !!$! write( 6, * ) 'RAD15M : ', gr15mnetflh(ij,1,k), rad_gdr15mnetfldtsh0(ij,1,k-1) * ( gts(ij,1) - rad_gtsbase(ij,1,1) ), emis(ij,1) * 5.67d-8 * gts(ij,1)**4, gts(ij,1) !!$! write( 61, * ) gr15mnetflh(ij,1,k-1), rad_gdr15mnetfldtsh0(ij,1,k-1) * ( gts(ij,1) - rad_gtsbase(ij,1,1) ), emis(ij,1) * 5.67d-8 * gts(ij,1)**4, gts(ij,1), gt(ij,1,km), gt(ij,1,km-1), gt(ij,1,km-2), gt(ij,1,km-3), gt(ij,1,km-4), gt(ij,1,km-5) !!$ write( 6, * ) 'RAD15M : ', gr15mnetflh(ij,1,k), & !!$ & emis(ij,1) * 5.67d-8 * gts(ij,1)**4, gts(ij,1) !!$ write( 61, * ) gr15mnetflh(ij,1,k-1), & !!$ & emis(ij,1) * 5.67d-8 * gts(ij,1)**4, gts(ij,1), & !!$ & gt(ij,1,km), gt(ij,1,km-1), gt(ij,1,km-2), gt(ij,1,km-3), & !!$ & gt(ij,1,km-4), gt(ij,1,km-5) !!$ call flush( 61 ) ! ! output variables ! !!$ do j = 1, jmax !!$ do i = 0, imax-1 !!$ goru(i,j) = uwflh_sum(i,j,kmax) !!$ gord(i,j) = 0.0d0 !!$ gsru(i,j) = uwflh_sum(i,j,0) !!$ gsrd(i,j) = dwflh_sum(i,j,0) !!$ gor (i,j) = goru(i,j) - gord(i,j) !!$ gsr (i,j) = gsru(i,j) - gsrd(i,j) !!$ end do !!$ end do end subroutine rad15m_lowatm_newscheme2006
Variable : | |||
trans_i2m_lli(:,:,:,:) : | real(DP) , allocatable, save
|
Variable : | |||
trans_i2m_uli(:,:,:,:) : | real(DP) , allocatable, save
|
Constant : | |||
version = ’$Name: dcpam5-20150217 $’ // ’$Id: rad_Mars_15m.f90,v 1.7 2012/11/10 05:00:50 yot Exp $’ : | character(*), parameter
|
Variable : | |||||||
xyra_Trans(:,:,:,:) : | real(DP) , allocatable, save
|