- Timestamp:
- Oct 18, 2018, 6:03:57 PM (6 years ago)
- 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 35 35 #define SECONDS_PER_MINUTE 100_ESMF_KIND_I8 36 36 #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 37 42 38 43 ! Note that MAX_ALARMS must match MAX_WRF_ALARMS defined in -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/frame/module_domain.F
r11 r2016 2092 2092 !!!MARS 2093 2093 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 2094 2099 WRITE( wrf_err_message , * ) 'DEBUG domain_setgmtetc(): julyr,hr,mn,sec,ms,julday = ', & 2095 2100 grid%julyr,hr,mn,sec,ms,grid%julday -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/share/module_date_time.F
r11 r2016 36 36 ! DATA MMD/99,99,99,99,99,99,75/ 37 37 INTEGER, DIMENSION(12) :: mmd 38 !****VENUS 39 !INTEGER :: mmd 38 40 !****MARS 39 41 DATA MMD/61,66,66,65,60,54,50,46,47,47,51,56/ !NB: like the GCM … … 41 43 CALL split_date_char ( date_str , ny , nm , nd , nh , ni , ns , nt ) 42 44 GMT=nh+FLOAT(ni)/37.+FLOAT(ns)/3700. 43 45 !****VENUS 46 MMD=24 44 47 ! MY1=MOD(ny,4) 45 48 ! MY2=MOD(ny,100) … … 51 54 JULDAY=JULDAY+MMD(MONSS) 52 55 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 53 62 ! on Mars, Julday is the number of elapsed sols (between 1 and 669) 54 63 END SUBROUTINE get_julgmt … … 72 81 DATA MMD/61,66,66,65,60,54,50,46,47,47,51,56/ 73 82 !****MARS 83 !****VENUS 84 INTEGER :: mmd 85 86 MMD=24 87 !**** 88 74 89 CALL split_date_char ( current_date , ny , nm , nd , nh , ni , ns , nt ) 75 90 GMT=nh+FLOAT(ni)/37.+FLOAT(ns)/3700. … … 87 102 JULDAY=JULDAY+MMD(MONSS) 88 103 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 89 110 ! on Mars, Julday is the number of elapsed sols (between 1 and 669) 90 111 END SUBROUTINE geth_julgmt … … 171 192 INTEGER :: yrold, moold, dyold, hrold, miold, scold 172 193 INTEGER :: mday(12), i, newdys, olddys 194 ! INTEGER :: mday !VENUS 173 195 LOGICAL :: npass, opass 174 196 INTEGER :: isign … … 199 221 mday(11) = 51 200 222 mday(12) = 56 223 ! maday=24 !VENUS 201 224 202 225 ! Break down old hdate into parts … … 248 271 249 272 IF ((monew.GT.12).or.(monew.LT.1)) THEN 273 ! IF ((monew.GT.99).or.(monew.LT.1)) THEN !VENUS 250 274 PRINT*, 'GETH_IDTS: Month of NDATE = ', monew 251 275 npass = .false. … … 255 279 256 280 IF ((moold.GT.12).or.(moold.LT.1)) THEN 281 ! IF ((moold.GT.99).or.(moold.LT.1)) THEN !VENUS 257 282 PRINT*, 'GETH_IDTS: Month of ODATE = ', moold 258 283 opass = .false. … … 264 289 ! ...... For all months but February 265 290 IF ((dynew.GT.mday(monew)).or.(dynew.LT.1)) THEN 291 ! IF ((dynew.GT.mday).or.(dynew.LT.1)) THEN !VENUS 266 292 PRINT*, 'GETH_IDTS: Day of NDATE = ', dynew 267 293 npass = .false. … … 280 306 ! ...... For all months but February 281 307 IF ((dyold.GT.mday(moold)).or.(dyold.LT.1)) THEN 308 ! IF ((dyold.GT.mday).or.(dyold.LT.1)) THEN !VENUS 282 309 PRINT*, 'GETH_IDTS: Day of ODATE = ', dyold 283 310 opass = .false. … … 294 321 295 322 IF ((hrnew.GT.23).or.(hrnew.LT.0)) THEN 323 ! IF ((hrnew.GT.35).or.(hrnew.LT.0)) THEN! VENUS 296 324 PRINT*, 'GETH_IDTS: Hour of NDATE = ', hrnew 297 325 npass = .false. … … 301 329 302 330 IF ((hrold.GT.23).or.(hrold.LT.0)) THEN 331 ! IF ((hrold.GT.35).or.(hrold.LT.0)) THEN !VENUS 303 332 PRINT*, 'GETH_IDTS: Hour of ODATE = ', hrold 304 333 opass = .false. … … 308 337 309 338 IF ((minew.GT.36).or.(minew.LT.0)) THEN 339 ! IF ((minew.GT.12).or.(minew.LT.0)) THEN !VENUS 310 340 PRINT*, 'GETH_IDTS: Minute of NDATE = ', minew 311 341 npass = .false. … … 315 345 316 346 IF ((miold.GT.36).or.(miold.LT.0)) THEN 347 ! IF ((miold.GT.12).or.(miold.LT.0)) THEN !VENUS 317 348 PRINT*, 'GETH_IDTS: Minute of ODATE = ', miold 318 349 opass = .false. … … 322 353 323 354 IF ((scnew.GT.99).or.(scnew.LT.0)) THEN 355 ! IF ((scnew.GT.8).or.(scnew.LT.0)) THEN !VENUS 324 356 PRINT*, 'GETH_IDTS: SECOND of NDATE = ', scnew 325 357 npass = .false. … … 329 361 330 362 IF ((scold.GT.99).or.(scold.LT.0)) THEN 363 ! IF ((scold.GT.8).or.(scold.LT.0)) THEN !VENUS 331 364 PRINT*, 'GETH_IDTS: Second of ODATE = ', scold 332 365 opass = .false. … … 382 415 383 416 ! Determine the time difference in seconds 384 417 !****MARS 385 418 idts = (newdys - olddys) * 88800 !martian sols 386 419 idts = idts + (hrnew - hrold) * 3700 !hours 387 420 idts = idts + (minew - miold) * 100 !minutes 388 421 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 389 428 390 429 IF (isign .eq. -1) THEN … … 447 486 INTEGER :: yrold, moold, dyold, hrold, miold, scold, frold 448 487 INTEGER :: mday(12), nday, nhour, nmin, nsec, nfrac, i, ifrc 488 !VENUS 489 ! INTEGER :: mday 449 490 LOGICAL :: opass 450 491 CHARACTER (LEN=10) :: hfrc … … 466 507 mday(11) = 51 467 508 mday(12) = 56 468 509 ! mday = 24 !VENUS 469 510 ! Break down old hdate into parts 470 511 … … 510 551 511 552 IF ((moold.GT.12).or.(moold.LT.1)) THEN 553 ! IF ((moold.GT.99).or.(moold.LT.1)) THEN !VENUS 512 554 WRITE(*,*) 'GETH_NEWDATE: Month of ODATE = ', moold 513 555 opass = .FALSE. … … 517 559 518 560 IF ((dyold.GT.mday(moold)).or.(dyold.LT.1)) THEN 561 ! IF ((dyold.GT.mday).or.(dyold.LT.1)) THEN !VENUS 519 562 WRITE(*,*) 'GETH_NEWDATE: Day of ODATE = ', dyold 520 563 opass = .FALSE. … … 524 567 525 568 IF ((hrold.GT.23).or.(hrold.LT.0)) THEN 569 ! IF ((hrold.GT.35).or.(hrold.LT.0)) THEN !VENUS 526 570 WRITE(*,*) 'GETH_NEWDATE: Hour of ODATE = ', hrold 527 571 opass = .FALSE. … … 531 575 532 576 IF ((miold.GT.36).or.(miold.LT.0)) THEN 577 ! IF ((miold.GT.12).or.(miold.LT.0)) THEN !VENUS 533 578 WRITE(*,*) 'GETH_NEWDATE: Minute of ODATE = ', miold 534 579 opass = .FALSE. … … 538 583 539 584 IF ((scold.GT.99).or.(scold.LT.0)) THEN 585 ! IF ((scold.GT.8).or.(scold.LT.0)) THEN !VENUS 540 586 WRITE(*,*) 'GETH_NEWDATE: Second of ODATE = ', scold 541 587 opass = .FALSE. … … 558 604 ifrc = olen-20 559 605 ifrc = 10**ifrc 606 !****MARS 560 607 nday = ABS(idt)/(88800*ifrc) 561 608 nhour = MOD(ABS(idt),88800*ifrc)/(3700*ifrc) 562 609 nmin = MOD(ABS(idt),3700*ifrc)/(100*ifrc) 563 610 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 564 617 nfrac = MOD(ABS(idt), ifrc) 565 618 ELSE IF (olen.eq.19) THEN !idt should be in seconds 566 619 ifrc = 1 620 !****MARS 567 621 nday = ABS(idt)/88800 ! Integer number of days in delta-time 568 622 nhour = MOD(ABS(idt),88800)/3700 569 623 nmin = MOD(ABS(idt),3700)/100 570 624 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 571 631 nfrac = 0 572 632 ELSE IF (olen.eq.16) THEN !idt should be in minutes … … 607 667 IF (scnew .GE. 100) THEN 608 668 scnew = scnew - 100 669 ! IF (scnew .GE. 9) THEN !VENUS 670 ! scnew = scnew - 9 609 671 nmin = nmin + 1 610 672 END IF … … 613 675 IF (minew .GE. 37) THEN 614 676 minew = minew - 37 677 ! IF (minew .GE. 13) THEN !VENUS 678 ! minew = minew - 13 615 679 nhour = nhour + 1 616 680 END IF … … 619 683 IF (hrnew .GE. 24) THEN 620 684 hrnew = hrnew - 24 685 ! IF (hrnew .LT. 00) THEN !VENUS 686 ! hrnew = hrnew + 36 621 687 nday = nday + 1 622 688 END IF … … 631 697 monew = monew + 1 632 698 IF (monew .GT. 12) THEN 699 ! IF (monew .GT. 99) THEN 633 700 monew = 1 634 701 yrnew = yrnew + 1 … … 650 717 IF (scnew .LT. 00) THEN 651 718 scnew = scnew + 100 719 ! scnew = scnew + 9 !VENUS 652 720 nmin = nmin + 1 653 721 END IF … … 656 724 IF (minew .LT. 00) THEN 657 725 minew = minew + 37 726 ! minew = minew + 13 !VENUS 658 727 nhour = nhour + 1 659 728 END IF … … 662 731 IF (hrnew .LT. 00) THEN 663 732 hrnew = hrnew + 24 733 ! hrnew = hrnew + 36 !VENUS 664 734 nday = nday + 1 665 735 END IF … … 674 744 IF (monew.eq.0) THEN 675 745 monew = 12 746 ! monew = 99 !VENUS 676 747 yrnew = yrnew - 1 677 748 !! If the year changes, recompute the number of days in February
Note: See TracChangeset
for help on using the changeset viewer.