Class | rad_Mars_NIR |
In: |
radiation/rad_Mars_NIR.f90
|
Note that Japanese and English are described in parallel.
!$ ! DryConvAdjust : | ä¹¾ç�¥å�æµ�調ç� |
!$ ! ———— : | ———— |
!$ ! DryConvAdjust : | Dry convective adjustment |
NAMELIST#rad_M_NIR_nml
Subroutine : | |||
xyz_Press(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in )
| ||
xyz_DTempDt(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(out)
|
����è¨�ç®����赤å����±ç�è¨�ç®�
Calculation of near infrared heating rate in the case of Mars
Calculation schume of solar nir infrared heating rate follows that shown in Forget et al., 1999
subroutine RadMarsNIR( xyz_Press, xyz_DTempDt ) ! ! ����è¨�ç®����赤å����±ç�è¨�ç®� ! ! Calculation of near infrared heating rate in the case of Mars ! ! Calculation schume of solar nir infrared heating rate follows ! that shown in Forget et al., 1999 ! �¢ã�¸ã�¥ã�¼ã����� ; USE statements ! ! ���»ç��� ! Time control ! use timeset, only: DelTime, TimeN, TimesetClockStart, TimesetClockStop ! ���¹ã�������¼ã�¿å�ºå�� ! History data output ! use gtool_historyauto, only: HistoryAutoPut ! �¥ä������³æ���»ã������±ã�� ! Date and time handler ! use dc_calendar, only: DCCalInquire ! �����»æ�°å¦å®��°è¨å®� ! Physical and mathematical constants settings ! use constants0, only: PI ! $ \pi $ . ! �����. Circular constant ! �æ³¢�¥å� (å¤��½å�¥å�) ! Short wave (insolation) incoming ! use rad_short_income, only : RadShortIncome ! 宣è��� ; Declaration statements ! implicit none real(DP), intent(in ):: xyz_Press (0:imax-1, 1:jmax, 1:kmax) ! $ p $ . æ°��� (�´æ�°ã������). ! Air pressure (full level) real(DP), intent(out):: xyz_DTempDt(0:imax-1, 1:jmax, 1:kmax) ! æ¸�º¦å¤�����. ! Temperature tendency ! ä½�æ¥å��� ! Work variables ! real(DP) :: qnir0 real(DP) :: RefPress real(DP) :: NLTEPress integer :: hour_in_day integer :: min_in_hour real(DP) :: sec_in_min real(DP) :: DistFromStarScld real(DP) :: DiurnalMeanFactor real(DP) :: xy_CosZet (0:imax-1, 1:jmax) real(DP) :: xy_CosZetSq(0:imax-1, 1:jmax) real(DP) :: MuFac integer:: i ! çµ�åº��¹å�������� DO ���¼ã�����æ¥å��� ! Work variables for DO loop in longitude integer:: j ! ç·�º¦�¹å�������� DO ���¼ã�����æ¥å��� ! Work variables for DO loop in latitude integer:: k ! ���´æ�¹å�������� DO ���¼ã�����æ¥å��� ! Work variables for DO loop in vertical direction ! å®�è¡��� ; Executable statement ! ! è¨�ç®�����è¨�æ¸���å§� ! Start measurement of computation time ! call TimesetClockStart( module_name ) ! ������ ! Initialization ! if ( .not. rad_Mars_NIR_inited ) then call MessageNotify( 'E', module_name, 'This module has not been initialized.' ) end if call DCCalInquire( hour_in_day = hour_in_day , min_in_hour = min_in_hour , sec_in_min = sec_in_min ) ! constants ! qnir0 = 1.3_DP / ( hour_in_day * min_in_hour * sec_in_min ) RefPress = 700.0_DP NLTEPress = 0.0075_DP call RadShortIncome( DistFromStarScld = DistFromStarScld, xy_CosZet = xy_CosZet, DiurnalMeanFactor = DiurnalMeanFactor, FlagOutput = .false. ) xy_CosZetSq = xy_CosZet**2 do j = 1, jmax do i = 0, imax-1 if( xy_CosZet(i,j) < 0.0_DP ) then do k = 1, kmax xyz_DTempDt(i,j,k) = 0.0_DP end do else MuFac = sqrt( ( 1224.0_DP * xy_CosZetSq(i,j) + 1.0d0 ) / 1225.0_DP ) do k = 1, kmax xyz_DTempDt(i,j,k) = qnir0 / DistFromStarScld**2 * sqrt( RefPress / xyz_Press(i,j,k) * MuFac ) / ( 1.0d0 + NLTEPress / xyz_Press(i,j,k) ) end do end if end do end do xyz_DTempDt = xyz_DTempDt * DiurnalMeanFactor ! ���¹ã�������¼ã�¿å�ºå�� ! History data output ! call HistoryAutoPut( TimeN, 'DTempDtMNIR', xyz_DTempDt ) ! è¨�ç®�����è¨�æ¸������æ� ! Pause measurement of computation time ! call TimesetClockStop( module_name ) end subroutine RadMarsNIR
Subroutine : | |||
xyz_Press(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(in )
| ||
xyz_DTempDt(0:imax-1, 1:jmax, 1:kmax) : | real(DP), intent(inout)
|
����è¨�ç®����赤å����±ç�è¨�ç®�
Calculation of near infrared heating rate in the case of Mars
Calculation schume of solar nir infrared heating rate follows that shown in Forget et al., 1999
subroutine RadMarsNIRINOUT( xyz_Press, xyz_DTempDt ) ! ! ����è¨�ç®����赤å����±ç�è¨�ç®� ! ! Calculation of near infrared heating rate in the case of Mars ! ! Calculation schume of solar nir infrared heating rate follows ! that shown in Forget et al., 1999 ! �¢ã�¸ã�¥ã�¼ã����� ; USE statements ! ! 宣è��� ; Declaration statements ! implicit none real(DP), intent(in ):: xyz_Press (0:imax-1, 1:jmax, 1:kmax) ! $ p $ . æ°��� (�´æ�°ã������). ! Air pressure (full level) real(DP), intent(inout):: xyz_DTempDt(0:imax-1, 1:jmax, 1:kmax) ! æ¸�º¦å¤�����. ! Temperature tendency ! ä½�æ¥å��� ! Work variables ! real(DP) :: xyz_DTempDtLocal(0:imax-1, 1:jmax, 1:kmax) ! å®�è¡��� ; Executable statement ! ! ������ ! Initialization ! if ( .not. rad_Mars_NIR_inited ) then call MessageNotify( 'E', module_name, 'This module has not been initialized.' ) end if call RadMarsNIR( xyz_Press, xyz_DTempDtLocal ) xyz_DTempDt = xyz_DTempDt + xyz_DTempDtLocal end subroutine RadMarsNIRINOUT
Subroutine : |
rad_Mars_NIR �¢ã�¸ã�¥ã�¼ã������������è¡����¾ã��. NAMELIST#rad_Mars_NIR_nml ����¿è¾¼�¿ã��������ç¶����§è�����¾ã��.
"rad_Mars_NIR" module is initialized. "NAMELIST#rad_Mars_NIR_nml" is loaded in this procedure.
This procedure input/output NAMELIST#rad_Mars_NIR_nml .
subroutine RadMarsNIRInit ! ! rad_Mars_NIR �¢ã�¸ã�¥ã�¼ã������������è¡����¾ã��. ! NAMELIST#rad_Mars_NIR_nml ����¿è¾¼�¿ã��������ç¶����§è�����¾ã��. ! ! "rad_Mars_NIR" module is initialized. ! "NAMELIST#rad_Mars_NIR_nml" is loaded in this procedure. ! ! �¢ã�¸ã�¥ã�¼ã����� ; 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 ! ç¨��¥å�������¡ã�� ! Kind type parameter ! use dc_types, only: STDOUT ! æ¨�æº��ºå�����ç½����. Unit number of standard output ! ��å�����ä½� ! Character handling ! use dc_string, only: StoA ! ���¹ã�������¼ã�¿å�ºå�� ! History data output ! use gtool_historyauto, only: HistoryAutoAddVariable ! 座æ����¼ã�¿è¨å®� ! Axes data settings ! use axesset, only: AxnameX, AxnameY, AxnameZ, AxnameT ! �æ³¢�¥å� (å¤��½å�¥å�) ! Short wave (insolation) incoming ! use rad_short_income, only : RadShortIncomeInit ! 宣è��� ; Declaration statements ! implicit none integer:: unit_nml ! NAMELIST ���¡ã�¤ã�����¼ã���³ç���ç½����. ! Unit number for NAMELIST file open integer:: iostat_nml ! NAMELIST èªã�¿è¾¼�¿æ���� IOSTAT. ! IOSTAT of NAMELIST read ! NAMELIST å¤��°ç¾¤ ! NAMELIST group name ! namelist /rad_Mars_NIR_nml/ FlagUse ! �����������¤ã���¤ã��������������ç¶� "dry_conv_adjust#DryConvAdjustInit" ! ���½ã�¼ã�¹ã�³ã�¼ã�������§ã������. ! ! Refer to source codes in the initialization procedure ! "dry_conv_adjust#DryConvAdjustInit" for the default values. ! ! å®�è¡��� ; Executable statement ! if ( rad_Mars_NIR_inited ) return ! �����������¤ã��¨å®� ! Default values settings ! FlagUse = .true. ! 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_NIR_nml, iostat = iostat_nml ) ! (out) close( unit_nml ) call NmlutilMsg( iostat_nml, module_name ) ! (in) end if ! ���¹ã�������¼ã�¿å�ºå�����������¸ã����°ç�»é�� ! Register of variables for history data output ! call HistoryAutoAddVariable( 'DTempDtMNIR', (/ AxnameX, AxnameY, AxnameZ, AxnameT /), 'near infrared heating rate', 'K s-1' ) ! Initialization of modules used in this module ! ! �æ³¢�¥å� (å¤��½å�¥å�) ! Short wave (insolation) incoming ! call RadShortIncomeInit ! �°å� ; Print ! call MessageNotify( 'M', module_name, '----- Initialization Messages -----' ) call MessageNotify( 'M', module_name, ' FlagUse = %b', l = (/ FlagUse /) ) call MessageNotify( 'M', module_name, '-- version = %c', c1 = trim(version) ) rad_Mars_NIR_inited = .true. end subroutine RadMarsNIRInit
Variable : | |||
rad_Mars_NIR_inited = .false. : | logical, save, public
|
Constant : | |||
module_name = ‘rad_Mars_NIR‘ : | character(*), parameter
|
Constant : | |||
version = ’$Name: $’ // ’$Id: rad_Mars_NIR.f90,v 1.4 2012/10/08 12:48:44 yot Exp $’ : | character(*), parameter
|