Changeset 999 for trunk/LMDZ.MARS/libf/dyn3d
- Timestamp:
- Jul 2, 2013, 9:40:28 AM (12 years ago)
- Location:
- trunk/LMDZ.MARS/libf/dyn3d
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/dyn3d/control.h
r831 r999 7 7 COMMON/control_i/ndynstep,day_step, & 8 8 & iperiod,iconser,idissip,iphysiq , & 9 & anneeref 10 COMMON/control_r/periodav,ecritphy,nday_r 9 & anneeref,ecritstart 10 COMMON/control_r/periodav,ecritphy,nday_r,timestart 11 11 12 12 INTEGER ndynstep ! # of dynamical time steps to run (if negative or not specified in run.def, nday_r is used instead) … … 19 19 REAL periodav 20 20 REAL ecritphy ! output data in "diagfi.nc" every ecritphy dynamical steps 21 INTEGER ecritstart ! output data in "start.nc" every ecritstart dynamical steps 22 REAL timestart ! time start for run in "start.nc" 21 23 real nday_r ! number of days to run (possibly including a fraction of day) 22 24 -
trunk/LMDZ.MARS/libf/dyn3d/defrun_new.F
r828 r999 252 252 else 253 253 WRITE(tapeout,*)" ecritphy = ",ecritphy 254 endif 255 256 ccc .... T.Navarro, read start time (06/2013) ... 257 c 258 WRITE(tapeout,*) "" 259 WRITE(tapeout,*) "date de debut dans le fichier start.nc" 260 timestart=-9999 261 call getin("timestart",timestart) 262 WRITE(tapeout,*)" timestart = ",timestart 263 264 ccc .... T.Navarro, start output (01/2013) ... 265 c 266 WRITE(tapeout,*) "" 267 WRITE(tapeout,*) "frequence (en pas) de l'ecriture ", 268 & "du fichier start.nc" 269 ecritstart=0 270 call getin("ecritstart",ecritstart) 271 ! verify that ecritstart is indeed a multiple of iphysiq 272 if ( ((real(ecritstart))/iphysiq) 273 & .ne.(real(ecritstart)/iphysiq) ) then 274 write(tapeout,*)" Error! ecritstart must be a multiple", 275 & " of iphysiq, but ecritstart=",ecritstart," and iphysiq=", 276 & iphysiq 277 else 278 WRITE(tapeout,*)" ecritstart = ",ecritstart 254 279 endif 255 280 -
trunk/LMDZ.MARS/libf/dyn3d/dynetat0.F
r791 r999 1 1 SUBROUTINE dynetat0(fichnom,nq,vcov,ucov, 2 . teta,q,masse,ps,phis,time )2 . teta,q,masse,ps,phis,time0) 3 3 4 4 use netcdf … … 20 20 c r4 or r8 restarts independently of having compiled 21 21 c the GCM in r4 or r8) 22 c 22 c June 2013 TN : Possibility to read files with a time axis. 23 c NOW defrun_new MUST BE CALLED BEFORE dynetat0. 23 24 c======================================================================= 24 25 c----------------------------------------------------------------------- … … 36 37 #include "serre.h" 37 38 #include "logic.h" 38 #include"advtrac.h" 39 #include "advtrac.h" 40 #include "control.h" 39 41 40 42 c Arguments: … … 48 50 REAL ps(iip1,jjp1),phis(iip1,jjp1) 49 51 50 REAL time ! fraction of day the fields correspond to52 REAL time0 ! fraction of day the fields correspond to 51 53 52 54 c Variables … … 58 60 INTEGER ierr, nid, nvarid, nqold 59 61 CHARACTER str3*3,yes*1 62 63 REAL,ALLOCATABLE :: time(:) ! times stored in start 64 INTEGER timelen ! number of times stored in the file 65 INTEGER indextime ! index of selected time 66 !REAL hour_ini ! fraction of day of stored date. Equivalent of day_ini, but 0=<hour_ini<1 67 68 INTEGER edges(4),corner(4) 60 69 61 70 c----------------------------------------------------------------------- … … 102 111 pa = tab_cntrl(17) 103 112 preff = tab_cntrl(18) 113 114 hour_ini = tab_cntrl(29) 115 104 116 c 105 117 clon = tab_cntrl(19) … … 119 131 IF( tab_cntrl(26).EQ.1. ) ysinus = . TRUE. 120 132 ENDIF 133 121 134 c ................................................................. 122 135 c … … 239 252 ENDIF 240 253 254 255 ! read time axis 256 ierr = nf90_inq_dimid(nid,"Time",nvarid) 257 ierr = nf90_inquire_dimension(nid,nvarid,len=timelen) 258 259 ALLOCATE(time(timelen)) 260 241 261 ierr=nf90_inq_varid(nid,"Time",nvarid) 242 262 IF (ierr .NE. nf90_noerr) THEN … … 254 274 CALL abort 255 275 ENDIF 256 276 277 ! select desired time 278 IF (timestart .lt. 0) THEN ! default: we use the last time value 279 indextime = timelen 280 ELSE ! else we look for the desired value in the time axis 281 indextime = 0 282 DO i=1,timelen 283 IF (abs(time(i) - timestart) .lt. 0.01) THEN 284 indextime = i 285 EXIT 286 ENDIF 287 ENDDO 288 IF (indextime .eq. 0) THEN 289 PRINT*, "Time", timestart," is not in "//fichnom//"!!" 290 PRINT*, "Stored times are:" 291 DO i=1,timelen 292 PRINT*, time(i) 293 ENDDO 294 CALL abort 295 ENDIF 296 ENDIF 297 298 ! In start the absolute date is day_ini + hour_ini + time 299 ! For now on, in the GCMdynamics, it is day_ini + time0 300 time0 = time(indextime) + hour_ini 301 day_ini = day_ini + INT(time0) 302 time0 = time0 - INT(time0) ! time0 devient le nouveau hour_ini 303 hour_ini = time0 304 305 PRINT*, "dynetat0: Selected time ",time(indextime), 306 . " at index ",indextime 307 308 DEALLOCATE(time) 309 310 311 ! read vcov 312 corner(1)=1 313 corner(2)=1 314 corner(3)=1 315 corner(4)=indextime 316 edges(1)=iip1 317 edges(2)=jjm 318 edges(3)=llm 319 edges(4)=1 320 ierr=nf90_inq_varid(nid,"vcov",nvarid) 321 IF (ierr .NE. nf90_noerr) THEN 322 PRINT*, "dynetat0: Le champ <vcov> est absent" 323 write(*,*)trim(nf90_strerror(ierr)) 324 CALL abort 325 ENDIF 326 !ierr=nf90_get_var(nid,nvarid,vcov) 327 ierr=nf90_get_var(nid,nvarid,vcov,corner,edges) 328 IF (ierr .NE. nf90_noerr) THEN 329 PRINT*, "dynetat0: Lecture echouee pour <vcov>" 330 write(*,*)trim(nf90_strerror(ierr)) 331 CALL abort 332 ENDIF 333 334 ! read ucov 335 corner(1)=1 336 corner(2)=1 337 corner(3)=1 338 corner(4)=indextime 339 edges(1)=iip1 340 edges(2)=jjp1 341 edges(3)=llm 342 edges(4)=1 257 343 ierr=nf90_inq_varid(nid,"ucov",nvarid) 258 344 IF (ierr .NE. nf90_noerr) THEN … … 261 347 CALL abort 262 348 ENDIF 263 ierr=nf90_get_var(nid,nvarid,ucov )349 ierr=nf90_get_var(nid,nvarid,ucov,corner,edges) 264 350 IF (ierr .NE. nf90_noerr) THEN 265 351 PRINT*, "dynetat0: Lecture echouee pour <ucov>" … … 267 353 CALL abort 268 354 ENDIF 269 270 ierr=nf90_inq_varid(nid,"vcov",nvarid) 271 IF (ierr .NE. nf90_noerr) THEN 272 PRINT*, "dynetat0: Le champ <vcov> est absent" 273 write(*,*)trim(nf90_strerror(ierr)) 274 CALL abort 275 ENDIF 276 ierr=nf90_get_var(nid,nvarid,vcov) 277 IF (ierr .NE. nf90_noerr) THEN 278 PRINT*, "dynetat0: Lecture echouee pour <vcov>" 279 write(*,*)trim(nf90_strerror(ierr)) 280 CALL abort 281 ENDIF 282 355 356 ! read teta 283 357 ierr=nf90_inq_varid(nid,"teta",nvarid) 284 358 IF (ierr .NE. nf90_noerr) THEN … … 287 361 CALL abort 288 362 ENDIF 289 ierr=nf90_get_var(nid,nvarid,teta )363 ierr=nf90_get_var(nid,nvarid,teta,corner,edges) 290 364 IF (ierr .NE. nf90_noerr) THEN 291 365 PRINT*, "dynetat0: Lecture echouee pour <teta>" … … 294 368 ENDIF 295 369 296 370 ! read tracers 297 371 IF(nq.GE.1) THEN 298 372 write(*,*) 'dynetat0: loading tracers' … … 318 392 ELSE 319 393 !ierr=nf90_get_var(nid,nvarid,q(1,1,1,iq)) 320 ierr=nf90_get_var(nid,nvarid,traceur )394 ierr=nf90_get_var(nid,nvarid,traceur,corner,edges) 321 395 IF (ierr .NE. nf90_noerr) THEN 322 396 ! PRINT*, "dynetat0: Lecture echouee pour "//str3 … … 355 429 ENDIF 356 430 431 ! read masse 357 432 ierr=nf90_inq_varid(nid,"masse",nvarid) 358 433 IF (ierr .NE. nf90_noerr) THEN … … 361 436 CALL abort 362 437 ENDIF 363 ierr=nf90_get_var(nid,nvarid,masse )438 ierr=nf90_get_var(nid,nvarid,masse,corner,edges) 364 439 IF (ierr .NE. nf90_noerr) THEN 365 440 PRINT*, "dynetat0: Lecture echouee pour <masse>" … … 368 443 ENDIF 369 444 445 ! read ps 446 corner(1)=1 447 corner(2)=1 448 corner(3)=indextime 449 edges(1)=iip1 450 edges(2)=jjp1 451 edges(3)=1 370 452 ierr=nf90_inq_varid(nid,"ps",nvarid) 371 453 IF (ierr .NE. nf90_noerr) THEN … … 374 456 CALL abort 375 457 ENDIF 376 ierr=nf90_get_var(nid,nvarid,ps )458 ierr=nf90_get_var(nid,nvarid,ps,corner,edges) 377 459 IF (ierr .NE. nf90_noerr) THEN 378 460 PRINT*, "dynetat0: Lecture echouee pour <ps>" -
trunk/LMDZ.MARS/libf/dyn3d/dynredem.F
r410 r999 36 36 character*80 abort_message 37 37 character(len=80) :: txt ! to store some text 38 39 !REAL hour_ini ! fraction of day of stored date. Equivalent of day_ini, but 0=<hour_ini<1 40 38 41 39 42 c Variables locales pour NetCDF: … … 72 75 tab_cntrl(7) = g 73 76 tab_cntrl(8) = cpp 74 tab_cntrl(9) = kappa77 tab_cntrl(9) = kappa 75 78 tab_cntrl(10) = daysec 76 79 tab_cntrl(11) = dtvr … … 82 85 tab_cntrl(17) = pa 83 86 tab_cntrl(18) = preff 87 88 tab_cntrl(29) = hour_ini 89 84 90 c 85 91 c ..... parametres pour le zoom ...... … … 106 112 IF( ysinus ) tab_cntrl(26) = 1. 107 113 ENDIF 114 115 108 116 c 109 117 c ......................................................... … … 983 991 character*80 abort_message 984 992 c 993 994 INTEGER edges(4),corner(4) 995 985 996 INTEGER nb,i,j 986 SAVE nb 987 DATA nb / 0 / 997 988 998 989 999 modname = 'dynredem1' … … 993 1003 CALL abort 994 1004 ENDIF 1005 1006 c On a single run, different files can be written with dynredem1. 1007 c Therefore, get the last time index from the file itself: 1008 ierr = NF_INQ_DIMID(nid,"Time",nvarid) 1009 ierr = NF_INQ_DIMLEN(nid,nvarid,nb) 995 1010 996 1011 c Ecriture/extension de la coordonnee temps … … 1008 1023 ierr = NF_PUT_VAR1_REAL (nid,nvarid,nb,time) 1009 1024 #endif 1010 PRINT*, "Enregistrement pour ", nb, time 1025 IF (ierr .NE. NF_NOERR) THEN 1026 print*, "Erreur ecriture temps!!" 1027 print*, NF_STRERROR(ierr) 1028 ENDIF 1029 !PRINT*, "Enregistrement pour ", nb, time 1011 1030 1012 1031 c Ecriture des champs 1013 1032 c 1033 corner(1)=1 1034 corner(2)=1 1035 corner(3)=1 1036 corner(4)=nb 1037 edges(1)=iip1 1038 edges(2)=jjm 1039 edges(3)=llm 1040 edges(4)=1 1041 ierr = NF_INQ_VARID(nid, "vcov", nvarid) 1042 IF (ierr .NE. NF_NOERR) THEN 1043 PRINT*, "Variable vcov n est pas definie" 1044 CALL abort 1045 ENDIF 1046 #ifdef NC_DOUBLE 1047 ierr = NF_PUT_VARA_DOUBLE (nid,nvarid,corner,edges,vcov) 1048 #else 1049 ierr = NF_PUT_VARA_REAL (nid,nvarid,corner,edges,vcov) 1050 #endif 1051 IF (ierr .NE. NF_NOERR) THEN 1052 print*, "Erreur ecriture vcov!!" 1053 print*, NF_STRERROR(ierr) 1054 ENDIF 1055 1056 c Following corner and egdes are the same for ucov, teta, tracers and masse: 1057 corner(1)=1 1058 corner(2)=1 1059 corner(3)=1 1060 corner(4)=nb 1061 edges(1)=iip1 1062 edges(2)=jjp1 1063 edges(3)=llm 1064 edges(4)=1 1014 1065 ierr = NF_INQ_VARID(nid, "ucov", nvarid) 1015 1066 IF (ierr .NE. NF_NOERR) THEN … … 1018 1069 ENDIF 1019 1070 #ifdef NC_DOUBLE 1020 ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ucov) 1021 #else 1022 ierr = NF_PUT_VAR_REAL (nid,nvarid,ucov) 1023 #endif 1024 1025 ierr = NF_INQ_VARID(nid, "vcov", nvarid) 1026 IF (ierr .NE. NF_NOERR) THEN 1027 PRINT*, "Variable vcov n est pas definie" 1028 CALL abort 1029 ENDIF 1030 #ifdef NC_DOUBLE 1031 ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,vcov) 1032 #else 1033 ierr = NF_PUT_VAR_REAL (nid,nvarid,vcov) 1034 #endif 1071 ierr = NF_PUT_VARA_DOUBLE (nid,nvarid,corner,edges,ucov) 1072 #else 1073 ierr = NF_PUT_VARA_REAL (nid,nvarid,corner,edges,ucov) 1074 #endif 1075 IF (ierr .NE. NF_NOERR) THEN 1076 print*, "Erreur ecriture ucov!!" 1077 print*, NF_STRERROR(ierr) 1078 ENDIF 1079 1035 1080 1036 1081 ierr = NF_INQ_VARID(nid, "teta", nvarid) … … 1040 1085 ENDIF 1041 1086 #ifdef NC_DOUBLE 1042 ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,teta) 1043 #else 1044 ierr = NF_PUT_VAR_REAL (nid,nvarid,teta) 1045 #endif 1087 ierr = NF_PUT_VARA_DOUBLE (nid,nvarid,corner,edges,teta) 1088 #else 1089 ierr = NF_PUT_VARA_REAL (nid,nvarid,corner,edges,teta) 1090 #endif 1091 IF (ierr .NE. NF_NOERR) THEN 1092 print*, "Erreur ecriture teta!!" 1093 print*, NF_STRERROR(ierr) 1094 ENDIF 1046 1095 1047 1096 IF (nq.GT.99) THEN … … 1068 1117 enddo 1069 1118 #ifdef NC_DOUBLE 1070 ierr = NF_PUT_VAR _DOUBLE (nid,nvarid,q3d)1071 #else 1072 ierr = NF_PUT_VAR _REAL (nid,nvarid,q3d)1119 ierr = NF_PUT_VARA_DOUBLE (nid,nvarid,corner,edgesq3d) 1120 #else 1121 ierr = NF_PUT_VARA_REAL (nid,nvarid,corner,edges,q3d) 1073 1122 #endif 1074 1123 IF (ierr .NE. NF_NOERR) THEN … … 1079 1128 ENDIF 1080 1129 c 1130 1081 1131 ierr = NF_INQ_VARID(nid, "masse", nvarid) 1082 1132 IF (ierr .NE. NF_NOERR) THEN … … 1085 1135 ENDIF 1086 1136 #ifdef NC_DOUBLE 1087 ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,masse) 1088 #else 1089 ierr = NF_PUT_VAR_REAL (nid,nvarid,masse) 1090 #endif 1091 c 1137 ierr = NF_PUT_VARA_DOUBLE (nid,nvarid,corner,edges,masse) 1138 #else 1139 ierr = NF_PUT_VARA_REAL (nid,nvarid,corner,edges,masse) 1140 #endif 1141 IF (ierr .NE. NF_NOERR) THEN 1142 print*, "Erreur ecriture masse!!" 1143 print*, NF_STRERROR(ierr) 1144 ENDIF 1145 c 1146 1147 corner(1)=1 1148 corner(2)=1 1149 corner(3)=nb 1150 edges(1)=iip1 1151 edges(2)=jjp1 1152 edges(3)=1 1092 1153 ierr = NF_INQ_VARID(nid, "ps", nvarid) 1093 1154 IF (ierr .NE. NF_NOERR) THEN … … 1096 1157 ENDIF 1097 1158 #ifdef NC_DOUBLE 1098 ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ps) 1099 #else 1100 ierr = NF_PUT_VAR_REAL (nid,nvarid,ps) 1101 #endif 1159 ierr = NF_PUT_VARA_DOUBLE (nid,nvarid,corner,edges,ps) 1160 #else 1161 ierr = NF_PUT_VARA_REAL (nid,nvarid,corner,edges,ps) 1162 #endif 1163 IF (ierr .NE. NF_NOERR) THEN 1164 print*, "Erreur ecriture ps!!" 1165 print*, NF_STRERROR(ierr) 1166 ENDIF 1102 1167 1103 1168 ierr = NF_CLOSE(nid) -
trunk/LMDZ.MARS/libf/dyn3d/gcm.F
r828 r999 143 143 c----------------------------------------------------------------------- 144 144 c Initialize tracers using iniadvtrac (Ehouarn, oct 2008) 145 CALL defrun_new( 99, .TRUE. ) 146 145 147 CALL iniadvtrac(nq,numvanle) 146 148 147 149 CALL dynetat0("start.nc",nqmx,vcov,ucov, 148 . teta,q,masse,ps,phis, time_0) 149 150 CALL defrun_new( 99, .TRUE. ) 150 . teta,q,masse,ps,phis,time_0) 151 151 152 ! in case time_0 (because of roundoffs) is close to zero, 152 153 ! set it to zero to avoid roundoff propagation issues … … 244 245 . 'c''est a dire du jour',i7,3x,'au jour',i7//) 245 246 246 CALL dynredem0("restart.nc",day_ end,anne_ini,phis,nqmx)247 CALL dynredem0("restart.nc",day_ini,anne_ini,phis,nqmx) 247 248 248 249 ecripar = .TRUE. … … 517 518 iday= day_ini+itau/day_step 518 519 time= REAL(itau-(iday-day_ini)*day_step)/day_step+time_0 519 IF(time.GT.1.) THEN 520 !IF(time.GT.1.) THEN 521 IF(time.GE.1.) THEN 520 522 time = time-1. 521 523 iday = iday+1 … … 544 546 c----------------------------------------------------------------------- 545 547 546 547 IF(itau.EQ.itaufin) THEN 548 549 550 write(*,*)' GCM: Appel test_period avant redem ; itau=',itau 548 IF( (ecritstart.GT.0) .and. (MOD(itau,ecritstart).EQ.0) 549 . .or. (itau.EQ.itaufin) ) THEN 550 551 !write(*,*)' GCM: Appel test_period avant redem ; itau=',itau 551 552 CALL test_period ( ucov,vcov,teta,q,p,phis ) 552 CALL dynredem1("restart.nc",time, 553 . vcov,ucov,teta,q,nqmx,masse,ps) 554 555 CLOSE(99) 553 554 write(*,'(A,I7,A,F12.5)') 555 . 'GCM: Ecriture du fichier restart ; itau= ',itau, 556 . ' date=',REAL(itau)/REAL(day_step) 557 CALL dynredem1("restart.nc",REAL(itau)/REAL(day_step), 558 . vcov,ucov,teta,q,nqmx,masse,ps) 559 560 CLOSE(99) 561 556 562 ENDIF 563 557 564 558 565 c----------------------------------------------------------------------- … … 598 605 time = REAL(itau-(iday-day_ini)*day_step)/day_step+time_0 599 606 600 IF(time.G T.1.) THEN607 IF(time.GE.1.) THEN 601 608 time = time-1. 602 609 iday = iday+1 … … 624 631 625 632 626 IF(itau.EQ.itaufin) 627 . CALL dynredem1("restart.nc",time, 628 . vcov,ucov,teta,q,nqmx,masse,ps) 629 630 forward = .TRUE. 631 GO TO 1 633 IF( (ecritstart.GT.0) .and. (MOD(itau,ecritstart).EQ.0) 634 . .or. (itau.EQ.itaufin) ) THEN 635 636 CALL dynredem1("restart.nc", 637 . REAL(itau)/REAL(day_step), 638 . vcov,ucov,teta,q,nqmx,masse,ps) 639 640 forward = .TRUE. 641 GO TO 1 642 643 ENDIF 632 644 633 645 -
trunk/LMDZ.MARS/libf/dyn3d/lect_start_archive.F
r563 r999 617 617 c call solarlong(timelist(i),sollong(i)) 618 618 c sollong(i) = sollong(i)*180./pi 619 write(*,*) 'initial state at martian day: ',int(timelist(i)) 619 c write(*,*) 'initial state at martian day: ',int(timelist(i)) 620 write(*,*) 'initial state at martian day: ',timelist(i) 620 621 c write(*,6) nint(timelist(i)),nint(mod(timelist(i),669)), 621 622 c . sollong(i) … … 630 631 memo = 0 631 632 do i=1,timelen 632 if (date.eq.int(timelist(i))) then 633 c if (date.eq.int(timelist(i))) then 634 if (abs(date-timelist(i)).lt.0.01) then 633 635 memo = i 634 636 endif … … 643 645 write(*,*) '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 644 646 do i=1,timelen 645 write(*,*) 'initial state at martian day: ', nint(timelist(i))647 write(*,*) 'initial state at martian day: ',timelist(i) 646 648 c write(*,6) nint(timelist(i)),nint(mod(timelist(i),669)) 647 649 end do 648 650 goto 123 649 651 endif 650 652 651 653 !----------------------------------------------------------------------- 652 654 ! 5. Read (time-dependent) data from datafile -
trunk/LMDZ.MARS/libf/dyn3d/newstart.F
r697 r999 1449 1449 if (choix_1.eq.0) then 1450 1450 day_ini=int(date) 1451 hour_ini=date-int(date) 1451 1452 endif 1452 1453 c … … 1460 1461 1461 1462 CALL dynredem0("restart.nc",day_ini,anneeref,phis,nqmx) 1462 CALL dynredem1("restart.nc",0.0,vcov,ucov,teta,q,nqmx,masse,ps) 1463 CALL dynredem1("restart.nc",hour_ini,vcov,ucov,teta,q, 1464 . nqmx,masse,ps) 1463 1465 C 1464 1466 C Ecriture etat initial physique 1465 1467 C 1466 1468 1467 call physdem1("restartfi.nc",lonfi,latfi,nsoilmx,nqmx, 1468 . dtphys,real(day_ini), 1469 . time,tsurf,tsoil,co2ice,emis,q2,qsurf, 1469 call physdem0("restartfi.nc",lonfi,latfi,nsoilmx,nqmx, 1470 . dtphys,real(day_ini),0.0, 1470 1471 . airefi,albfi,ithfi,zmea,zstd,zsig,zgam,zthe) 1472 call physdem1("restartfi.nc",nsoilmx,nqmx, 1473 . dtphys,hour_ini, 1474 . tsurf,tsoil,co2ice,emis,q2,qsurf) 1471 1475 1472 1476 c======================================================================= -
trunk/LMDZ.MARS/libf/dyn3d/start2archive.F
r410 r999 110 110 c----------------------------------------------------------------------- 111 111 112 CALL defrun_new(99, .TRUE. ) 112 113 grireg = .TRUE. 113 114 … … 290 291 c----------------------------------------------------------------------- 291 292 292 date = day_ini 293 date = day_ini + hour_ini 293 294 ierr= NF_INQ_VARID(nid,"Time",varid) 294 295 ierr= NF_INQ_DIMID(nid,"Time",dimid) -
trunk/LMDZ.MARS/libf/dyn3d/temps.h
r791 r999 3 3 4 4 COMMON/temps_i/day_ini,day_end,anne_ini,itaufin 5 COMMON/temps_r/dt 5 COMMON/temps_r/dt,hour_ini 6 6 7 7 INTEGER itaufin ! total number of dynamical steps for the run … … 9 9 INTEGER*4 day_end ! final day # ; i.e. day # when this simulation ends 10 10 INTEGER*4 anne_ini ! initial year # of simulation sequence ? Not used. 11 REAL dt ! (dynamics) time step (changes if doing Matsuno or LF step) 11 REAL dt ! (dynamics) time step (changes if doing Matsuno or LF step) 12 REAL hour_ini ! initial fraction of day of simulation sequence (0=<hour_ini<1) 12 13 13 14 c-----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.