Ignore:
Timestamp:
Oct 18, 2018, 6:03:57 PM (6 years ago)
Author:
mlefevre
Message:

Added commented lines for mesoscale venusian calendar

Location:
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/external/esmf_time_f90/ESMF_TimeMgr.inc

    r11 r2016  
    3535#define SECONDS_PER_MINUTE 100_ESMF_KIND_I8
    3636#define HOURS_PER_DAY 24_ESMF_KIND_I8
     37!VENUS
     38!#define SECONDS_PER_DAY 4212_ESMF_KIND_I8
     39!#define SECONDS_PER_HOUR 117_ESMF_KIND_I8
     40!#define SECONDS_PER_MINUTE 9_ESMF_KIND_I8
     41!#define HOURS_PER_DAY 36_ESMF_KIND_I8
    3742
    3843! Note that MAX_ALARMS must match MAX_WRF_ALARMS defined in
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/frame/module_domain.F

    r11 r2016  
    20922092!!!MARS
    20932093          grid%gmt=hr+real(mn)/37.+real(sec)/3700.+real(ms)/(1000*3700)
     2094!!!VENUS
     2095!        juldayv = MODULO(juldayv,2400.)
     2096!        grid%gmt=(((juldayv)/100.))+(hr+real(mn)/13.+real(sec)/117.+real(ms)/(1000*117))/420000.
     2097!        grid%gmt = MODULO(grid%gmt,24.)
     2098
    20942099        WRITE( wrf_err_message , * ) 'DEBUG domain_setgmtetc():  julyr,hr,mn,sec,ms,julday = ', &
    20952100                                     grid%julyr,hr,mn,sec,ms,grid%julday
  • trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/share/module_date_time.F

    r11 r2016  
    3636!      DATA MMD/99,99,99,99,99,99,75/
    3737      INTEGER, DIMENSION(12) :: mmd
     38!****VENUS
     39      !INTEGER :: mmd
    3840!****MARS
    3941      DATA MMD/61,66,66,65,60,54,50,46,47,47,51,56/  !NB: like the GCM
     
    4143      CALL split_date_char ( date_str , ny , nm , nd , nh , ni , ns , nt )
    4244      GMT=nh+FLOAT(ni)/37.+FLOAT(ns)/3700.
    43 
     45!****VENUS
     46       MMD=24
    4447!      MY1=MOD(ny,4)
    4548!      MY2=MOD(ny,100)
     
    5154        JULDAY=JULDAY+MMD(MONSS)
    5255      ENDDO
     56
     57!****VNEUS
     58      !JULDAYV=MODULO(JULDAYV,2400.)
     59      !GMT=((JULDAYV/100.))+(nh+FLOAT(ni)/13.+FLOAT(ns)/117.)/420000.
     60      !GMT=MODULO(GMT,24.)
     61
    5362! on Mars, Julday is the number of elapsed sols (between 1 and 669)
    5463    END SUBROUTINE get_julgmt
     
    7281      DATA MMD/61,66,66,65,60,54,50,46,47,47,51,56/ 
    7382!****MARS
     83!****VENUS
     84     INTEGER :: mmd
     85
     86     MMD=24
     87!****
     88
    7489     CALL split_date_char ( current_date , ny , nm , nd , nh , ni , ns , nt )
    7590     GMT=nh+FLOAT(ni)/37.+FLOAT(ns)/3700.
     
    87102       JULDAY=JULDAY+MMD(MONSS)
    88103     ENDDO
     104
     105!****VENUS
     106     !JULDAYV=MODULO(JULDAYV,2400.)
     107     !GMT=((JULDAYv/100.))+(nh+FLOAT(ni)/13.+FLOAT(ns)/117.)/420000.
     108     !GMT=MODULO(GMT,24.)
     109
    89110! on Mars, Julday is the number of elapsed sols (between 1 and 669)
    90111   END SUBROUTINE geth_julgmt
     
    171192      INTEGER :: yrold, moold, dyold, hrold, miold, scold
    172193      INTEGER :: mday(12), i, newdys, olddys
     194!     INTEGER :: mday !VENUS
    173195      LOGICAL :: npass, opass
    174196      INTEGER :: isign
     
    199221      mday(11) = 51
    200222      mday(12) = 56
     223!     maday=24 !VENUS
    201224     
    202225      !  Break down old hdate into parts
     
    248271     
    249272      IF ((monew.GT.12).or.(monew.LT.1)) THEN
     273!      IF ((monew.GT.99).or.(monew.LT.1)) THEN !VENUS
    250274         PRINT*, 'GETH_IDTS:  Month of NDATE = ', monew
    251275         npass = .false.
     
    255279     
    256280      IF ((moold.GT.12).or.(moold.LT.1)) THEN
     281!      IF ((moold.GT.99).or.(moold.LT.1)) THEN !VENUS
    257282         PRINT*, 'GETH_IDTS:  Month of ODATE = ', moold
    258283         opass = .false.
     
    264289      ! ...... For all months but February
    265290         IF ((dynew.GT.mday(monew)).or.(dynew.LT.1)) THEN
     291!         IF ((dynew.GT.mday).or.(dynew.LT.1)) THEN !VENUS
    266292            PRINT*, 'GETH_IDTS:  Day of NDATE = ', dynew
    267293            npass = .false.
     
    280306      ! ...... For all months but February
    281307         IF ((dyold.GT.mday(moold)).or.(dyold.LT.1)) THEN
     308!         IF ((dyold.GT.mday).or.(dyold.LT.1)) THEN !VENUS
    282309            PRINT*, 'GETH_IDTS:  Day of ODATE = ', dyold
    283310            opass = .false.
     
    294321     
    295322      IF ((hrnew.GT.23).or.(hrnew.LT.0)) THEN
     323!      IF ((hrnew.GT.35).or.(hrnew.LT.0)) THEN! VENUS
    296324         PRINT*, 'GETH_IDTS:  Hour of NDATE = ', hrnew
    297325         npass = .false.
     
    301329     
    302330      IF ((hrold.GT.23).or.(hrold.LT.0)) THEN
     331!      IF ((hrold.GT.35).or.(hrold.LT.0)) THEN !VENUS
    303332         PRINT*, 'GETH_IDTS:  Hour of ODATE = ', hrold
    304333         opass = .false.
     
    308337     
    309338      IF ((minew.GT.36).or.(minew.LT.0)) THEN
     339!      IF ((minew.GT.12).or.(minew.LT.0)) THEN !VENUS
    310340         PRINT*, 'GETH_IDTS:  Minute of NDATE = ', minew
    311341         npass = .false.
     
    315345     
    316346      IF ((miold.GT.36).or.(miold.LT.0)) THEN
     347!      IF ((miold.GT.12).or.(miold.LT.0)) THEN !VENUS
    317348         PRINT*, 'GETH_IDTS:  Minute of ODATE = ', miold
    318349         opass = .false.
     
    322353     
    323354      IF ((scnew.GT.99).or.(scnew.LT.0)) THEN
     355!      IF ((scnew.GT.8).or.(scnew.LT.0)) THEN !VENUS
    324356         PRINT*, 'GETH_IDTS:  SECOND of NDATE = ', scnew
    325357         npass = .false.
     
    329361     
    330362      IF ((scold.GT.99).or.(scold.LT.0)) THEN
     363!      IF ((scold.GT.8).or.(scold.LT.0)) THEN !VENUS
    331364         PRINT*, 'GETH_IDTS:  Second of ODATE = ', scold
    332365         opass = .false.
     
    382415     
    383416      !  Determine the time difference in seconds
    384      
     417!****MARS     
    385418      idts = (newdys - olddys) * 88800    !martian sols
    386419      idts = idts + (hrnew - hrold) * 3700  !hours
    387420      idts = idts + (minew - miold) * 100  !minutes
    388421      idts = idts + (scnew - scold)
     422!****VENUS
     423!      idts = (newdys - olddys) * 4212    !martian sols
     424!      idts = idts + (hrnew - hrold) * 117
     425!      idts = idts + (minew - miold) * 9
     426!      idts = idts + (scnew - scold)
     427
    389428     
    390429      IF (isign .eq. -1) THEN
     
    447486      INTEGER :: yrold, moold, dyold, hrold, miold, scold, frold
    448487      INTEGER :: mday(12), nday, nhour, nmin, nsec, nfrac, i, ifrc
     488!VENUS
     489!      INTEGER :: mday
    449490      LOGICAL :: opass
    450491      CHARACTER (LEN=10) :: hfrc
     
    466507      mday(11) = 51
    467508      mday(12) = 56
    468      
     509!     mday = 24 !VENUS     
    469510      !  Break down old hdate into parts
    470511     
     
    510551     
    511552      IF ((moold.GT.12).or.(moold.LT.1)) THEN
     553!      IF ((moold.GT.99).or.(moold.LT.1)) THEN !VENUS
    512554         WRITE(*,*) 'GETH_NEWDATE:  Month of ODATE = ', moold
    513555         opass = .FALSE.
     
    517559     
    518560      IF ((dyold.GT.mday(moold)).or.(dyold.LT.1)) THEN
     561!      IF ((dyold.GT.mday).or.(dyold.LT.1)) THEN !VENUS
    519562         WRITE(*,*) 'GETH_NEWDATE:  Day of ODATE = ', dyold
    520563         opass = .FALSE.
     
    524567     
    525568      IF ((hrold.GT.23).or.(hrold.LT.0)) THEN
     569!      IF ((hrold.GT.35).or.(hrold.LT.0)) THEN !VENUS
    526570         WRITE(*,*) 'GETH_NEWDATE:  Hour of ODATE = ', hrold
    527571         opass = .FALSE.
     
    531575     
    532576      IF ((miold.GT.36).or.(miold.LT.0)) THEN
     577!      IF ((miold.GT.12).or.(miold.LT.0)) THEN !VENUS
    533578         WRITE(*,*) 'GETH_NEWDATE:  Minute of ODATE = ', miold
    534579         opass = .FALSE.
     
    538583     
    539584      IF ((scold.GT.99).or.(scold.LT.0)) THEN
     585!      IF ((scold.GT.8).or.(scold.LT.0)) THEN !VENUS
    540586         WRITE(*,*) 'GETH_NEWDATE:  Second of ODATE = ', scold
    541587         opass = .FALSE.
     
    558604         ifrc = olen-20
    559605         ifrc = 10**ifrc
     606!****MARS
    560607         nday   = ABS(idt)/(88800*ifrc)
    561608         nhour  = MOD(ABS(idt),88800*ifrc)/(3700*ifrc)
    562609         nmin   = MOD(ABS(idt),3700*ifrc)/(100*ifrc)
    563610         nsec   = MOD(ABS(idt),100*ifrc)/(ifrc)
     611!****VENUS
     612         nday   = ABS(idt)/(4212*ifrc)
     613         nhour  = MOD(ABS(idt),4212*ifrc)/(117*ifrc)
     614         nmin   = MOD(ABS(idt),117*ifrc)/(9*ifrc)
     615         nsec   = MOD(ABS(idt),9*ifrc)/(ifrc)
     616
    564617         nfrac = MOD(ABS(idt), ifrc)
    565618      ELSE IF (olen.eq.19) THEN  !idt should be in seconds
    566619         ifrc = 1
     620!****MARS
    567621         nday   = ABS(idt)/88800 ! Integer number of days in delta-time
    568622         nhour  = MOD(ABS(idt),88800)/3700
    569623         nmin   = MOD(ABS(idt),3700)/100
    570624         nsec   = MOD(ABS(idt),100)
     625!****VENUS
     626         nday   = ABS(idt)/4212 ! Integer number of days in delta-time
     627         nhour  = MOD(ABS(idt),4212)/117
     628         nmin   = MOD(ABS(idt),117)/9
     629         nsec   = MOD(ABS(idt),9
     630
    571631         nfrac  = 0
    572632      ELSE IF (olen.eq.16) THEN !idt should be in minutes
     
    607667         IF (scnew .GE. 100) THEN
    608668            scnew = scnew - 100
     669!         IF (scnew .GE. 9) THEN !VENUS
     670!           scnew = scnew - 9
    609671            nmin  = nmin + 1
    610672         END IF
     
    613675         IF (minew .GE. 37) THEN
    614676            minew = minew - 37
     677!         IF (minew .GE. 13) THEN !VENUS
     678!            minew = minew - 13
    615679            nhour  = nhour + 1
    616680         END IF
     
    619683         IF (hrnew .GE. 24) THEN
    620684            hrnew = hrnew - 24
     685!         IF (hrnew .LT. 00) THEN !VENUS
     686!            hrnew = hrnew + 36
    621687            nday  = nday + 1
    622688         END IF
     
    631697               monew = monew + 1
    632698               IF (monew .GT. 12) THEN
     699!               IF (monew .GT. 99) THEN
    633700                  monew = 1
    634701                  yrnew = yrnew + 1
     
    650717         IF (scnew .LT. 00) THEN
    651718            scnew = scnew + 100
     719!            scnew = scnew + 9 !VENUS
    652720            nmin  = nmin + 1
    653721         END IF
     
    656724         IF (minew .LT. 00) THEN
    657725            minew = minew + 37
     726!            minew = minew + 13 !VENUS
    658727            nhour  = nhour + 1
    659728         END IF
     
    662731         IF (hrnew .LT. 00) THEN
    663732            hrnew = hrnew + 24
     733!            hrnew = hrnew + 36 !VENUS
    664734            nday  = nday + 1
    665735         END IF
     
    674744               IF (monew.eq.0) THEN
    675745                  monew = 12
     746!                  monew = 99 !VENUS
    676747                  yrnew = yrnew - 1
    677748                  !! If the year changes, recompute the number of days in February
Note: See TracChangeset for help on using the changeset viewer.