Changeset 2408 for LMDZ5/branches/testing/libf/dyn3dmem
- Timestamp:
- Dec 14, 2015, 11:43:09 AM (9 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 12 deleted
- 6 edited
- 11 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 2293-2295,2297,2299-2302,2305-2313,2315,2317-2380,2382-2396
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dyn3dmem/bands.F90
r1910 r2408 105 105 SUBROUTINE Set_Bands 106 106 USE parallel_lmdz 107 #ifdef CPP_PHYS108 ! Ehouarn: what follows is only related to // physics109 USE mod_phys_lmdz_para, ONLY : jj_para_begin,jj_para_end110 #endif111 107 IMPLICIT NONE 112 108 INCLUDE 'dimensions.h' 113 INTEGER :: i 109 INTEGER :: i, ij 110 INTEGER :: jj_para_begin(0:mpi_size-1) 111 INTEGER :: jj_para_end(0:mpi_size-1) 114 112 115 113 do i=0,mpi_size-1 … … 118 116 enddo 119 117 120 #ifdef CPP_PHYS 121 do i=0,MPI_Size-1 118 jj_para_begin(0)=1 119 ij=distrib_phys(0)+iim-1 120 jj_para_end(0)=((ij-1)/iim)+1 121 122 DO i=1,mpi_Size-1 123 ij=ij+1 124 jj_para_begin(i)=((ij-1)/iim)+1 125 ij=ij+distrib_phys(i)-1 126 jj_para_end(i)=((ij-1)/iim)+1 127 ENDDO 128 129 do i=0,MPI_Size-1 122 130 jj_Nb_physic(i)=jj_para_end(i)-jj_para_begin(i)+1 123 131 if (i/=0) then … … 139 147 endif 140 148 enddo 141 #endif 149 142 150 CALL create_distrib(jj_Nb_Caldyn,distrib_caldyn) 143 151 CALL create_distrib(jj_Nb_vanleer,distrib_vanleer) … … 479 487 480 488 489 -
LMDZ5/branches/testing/libf/dyn3dmem/call_calfis_mod.F90
r2298 r2408 137 137 138 138 jD_cur = jD_ref + day_ini - day_ref & 139 & + itau/day_step139 & + (itau+1)/day_step 140 140 141 141 IF (planet_type .eq."generic") THEN … … 145 145 146 146 jH_cur = jH_ref + start_time + & 147 & mod(itau ,day_step)/float(day_step)147 & mod(itau+1,day_step)/float(day_step) 148 148 if (jH_cur > 1.0 ) then 149 149 jD_cur = jD_cur +1. -
LMDZ5/branches/testing/libf/dyn3dmem/dynredem_mod.F90
r1910 r2408 1 !2 ! $Id$3 !4 1 MODULE dynredem_mod 5 2 6 CONTAINS7 8 SUBROUTINE dynredem_write_u(ncid,id,var,ll)9 3 USE dimensions_mod 10 4 USE parallel_lmdz 11 5 USE mod_hallo 12 IMPLICIT NONE 13 INTEGER :: ncid 14 CHARACTER(LEN=*) :: id 15 REAL :: var(ijb_u:ije_u,ll) 16 REAL,ALLOCATABLE,SAVE :: var_tmp(:,:) 17 REAL,ALLOCATABLE,SAVE :: var_glo(:) 18 INTEGER :: ll 19 INTEGER :: count(4) 20 INTEGER :: start(4) 21 INTEGER :: l 22 INTEGER :: nvarid 23 INTEGER :: ierr 24 INCLUDE 'netcdf.inc' 6 USE netcdf 7 PRIVATE 8 PUBLIC :: dynredem_write_u, dynredem_write_v, dynredem_read_u, err 9 PUBLIC :: cre_var, get_var1, put_var, fil, modname, msg 10 CHARACTER(LEN=256), SAVE :: fil, modname 11 INTEGER, SAVE :: nvarid 12 13 14 CONTAINS 15 16 17 !=============================================================================== 18 ! 19 SUBROUTINE dynredem_write_u(ncid,id,var,ll) 20 ! 21 !=============================================================================== 22 IMPLICIT NONE 23 !=============================================================================== 24 ! Arguments: 25 INTEGER, INTENT(IN) :: ncid 26 CHARACTER(LEN=*), INTENT(IN) :: id 27 REAL, INTENT(IN) :: var(ijb_u:ije_u,ll) 28 INTEGER, INTENT(IN) :: ll 29 !=============================================================================== 30 ! Local variables: 31 REAL, ALLOCATABLE, SAVE :: var_tmp(:,:), var_glo(:) 32 INTEGER :: start(4), count(4), l, ierr 33 !=============================================================================== 34 start(:)=[1,1,1,1]; count(:)=[iip1,jjp1,1,1] 35 36 !$OMP MASTER 37 IF(mpi_rank==0) CALL err(NF90_INQ_VARID(ncid,id,nvarid),"inq",id) 38 !$OMP END MASTER 39 40 !$OMP MASTER 41 ALLOCATE(var_tmp(ijb_u:ije_u,ll),var_glo(ip1jmp1)) 42 !$OMP END MASTER 43 !$OMP BARRIER 44 45 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 46 DO l=1,ll; var_tmp(:,l)=var(:,l); END DO 47 DO l=1,ll 48 CALL gather_field_u(var_tmp(:,l),var_glo,1) 49 IF(mpi_rank==0) THEN 50 !$OMP MASTER 51 start(3)=l 52 CALL err(NF90_PUT_VAR(ncid,nvarid,var_glo,start,count),"put",id) 53 !$OMP END MASTER 54 END IF 55 END DO 56 !$OMP BARRIER 57 !$OMP MASTER 58 DEALLOCATE(var_glo,var_tmp) 59 !$OMP END MASTER 60 !$OMP BARRIER 61 62 END SUBROUTINE dynredem_write_u 63 ! 64 !=============================================================================== 65 66 67 !=============================================================================== 68 ! 69 SUBROUTINE dynredem_write_v(ncid,id,var,ll) 70 ! 71 !=============================================================================== 72 IMPLICIT NONE 73 !=============================================================================== 74 ! Arguments: 75 INTEGER, INTENT(IN) :: ncid 76 CHARACTER(LEN=*), INTENT(IN) :: id 77 REAL, INTENT(IN) :: var(ijb_v:ije_v,ll) 78 INTEGER, INTENT(IN) :: ll 79 !=============================================================================== 80 ! Local variables: 81 REAL, ALLOCATABLE, SAVE :: var_tmp(:,:), var_glo(:) 82 INTEGER :: start(4), count(4), l, ierr 83 !=============================================================================== 84 start(:)=[1,1,1,1]; count(:)=[iip1,jjm,1,1] 85 86 !$OMP MASTER 87 IF(mpi_rank==0) CALL err(NF90_INQ_VARID(ncid,id,nvarid),"inq",id) 88 !$OMP END MASTER 89 90 !$OMP MASTER 91 ALLOCATE(var_tmp(ijb_v:ije_v,ll),var_glo(ip1jm)) 92 !$OMP END MASTER 93 !$OMP BARRIER 94 95 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 96 DO l=1,ll; var_tmp(:,l)=var(:,l); END DO 97 DO l=1,ll 98 CALL gather_field_v(var_tmp(:,l),var_glo,1) 99 IF(mpi_rank==0) THEN 100 !$OMP MASTER 101 start(3)=l 102 CALL err(NF90_PUT_VAR(ncid,nvarid,var_glo,start,count),"put",id) 103 !$OMP END MASTER 104 END IF 105 END DO 106 !$OMP BARRIER 107 !$OMP MASTER 108 DEALLOCATE(var_glo,var_tmp) 109 !$OMP END MASTER 110 !$OMP BARRIER 111 112 END SUBROUTINE dynredem_write_v 113 ! 114 !=============================================================================== 115 116 117 !=============================================================================== 118 ! 119 SUBROUTINE dynredem_read_u(ncid,id,var,ll) 120 ! 121 !=============================================================================== 122 IMPLICIT NONE 123 !=============================================================================== 124 ! Arguments: 125 INTEGER, INTENT(IN) :: ncid 126 CHARACTER(LEN=*), INTENT(IN) :: id 127 REAL, INTENT(OUT) :: var(ijb_u:ije_u,ll) 128 INTEGER, INTENT(IN) :: ll 129 !=============================================================================== 130 ! Local variables: 131 REAL, ALLOCATABLE, SAVE :: var_tmp(:,:), var_glo(:) 132 INTEGER :: start(4), count(4), l, ierr 133 !=============================================================================== 134 start(:)=[1,1,1,1]; count(:)=[iip1,jjp1,1,1] 135 136 !$OMP MASTER 137 IF(mpi_rank==0) CALL err(NF90_INQ_VARID(ncid,id,nvarid),'inq',id) 138 !$OMP END MASTER 139 140 !$OMP MASTER 141 ALLOCATE(var_tmp(ijb_u:ije_u,ll),var_glo(ip1jmp1)) 142 !$OMP END MASTER 143 !$OMP BARRIER 144 145 DO l=1,ll 146 IF(mpi_rank==0) THEN 147 !$OMP MASTER 148 start(3)=l 149 CALL err(NF90_GET_VAR(ncid,nvarid,var_glo,start,count),"get",id) 150 !$OMP END MASTER 151 END IF 152 CALL scatter_field_u(var_glo,var_tmp(:,l),1) 153 END DO 154 155 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 156 DO l=1,ll; var(:,l)=var_tmp(:,l); END DO 25 157 26 count(:)=(/ iip1,jjp1,1,1 /) 27 start(:)=(/ 1,1,1,1 /) 28 29 !$OMP MASTER 30 IF (mpi_rank==0) THEN 31 ierr = NF_INQ_VARID(ncid, id, nvarid) 32 IF (ierr .NE. NF_NOERR) THEN 33 PRINT*, "Variable "//id//" n est pas definie" 34 CALL abort 35 ENDIF 36 ENDIF 37 !$OMP END MASTER 38 39 !$OMP MASTER 40 ALLOCATE(var_tmp(ijb_u:ije_u,ll)) 41 ALLOCATE(var_glo(ip1jmp1)) 42 !$OMP END MASTER 43 !$OMP BARRIER 44 45 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 46 DO l=1,ll 47 var_tmp(:,l)=var(:,l) 48 ENDDO 49 50 DO l=1,ll 51 CALL gather_field_u(var_tmp(:,l),var_glo,1) 52 IF (mpi_rank==0) THEN 53 !$OMP MASTER 54 start(3)=l 158 !$OMP BARRIER 159 !$OMP MASTER 160 DEALLOCATE(var_glo,var_tmp) 161 !$OMP END MASTER 162 !$OMP BARRIER 163 164 END SUBROUTINE dynredem_read_u 165 ! 166 !=============================================================================== 167 168 169 !=============================================================================== 170 ! 171 SUBROUTINE cre_var(ncid,var,title,did,units) 172 ! 173 !=============================================================================== 174 IMPLICIT NONE 175 !=============================================================================== 176 ! Arguments: 177 INTEGER, INTENT(IN) :: ncid 178 CHARACTER(LEN=*), INTENT(IN) :: var, title 179 INTEGER, INTENT(IN) :: did(:) 180 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units 181 !=============================================================================== 55 182 #ifdef NC_DOUBLE 56 ierr = NF_PUT_VARA_DOUBLE (ncid,nvarid,start,count,var_glo)183 CALL err(NF90_DEF_VAR(ncid,var,NF90_DOUBLE,did,nvarid),"inq",var) 57 184 #else 58 ierr = NF_PUT_VARA_REAL (ncid,nvarid,start,count,var_glo)185 CALL err(NF90_DEF_VAR(ncid,var,NF90_FLOAT ,did,nvarid),"inq",var) 59 186 #endif 60 !$OMP END MASTER 61 ENDIF 62 ENDDO 63 64 !$OMP BARRIER 65 !$OMP MASTER 66 DEALLOCATE(var_tmp) 67 DEALLOCATE(var_glo) 68 !$OMP END MASTER 69 !$OMP BARRIER 70 71 END SUBROUTINE dynredem_write_u 72 73 SUBROUTINE dynredem_write_v(ncid,id,var,ll) 74 USE dimensions_mod 75 USE parallel_lmdz 76 USE mod_hallo 77 IMPLICIT NONE 78 INTEGER :: ncid 79 CHARACTER(LEN=*) :: id 80 REAL :: var(ijb_v:ije_v,ll) 81 REAL,ALLOCATABLE,SAVE :: var_tmp(:,:) 82 REAL,ALLOCATABLE,SAVE :: var_glo(:) 83 INTEGER :: ll 84 INTEGER :: count(4) 85 INTEGER :: start(4) 86 INTEGER :: l 87 INTEGER :: nvarid 88 INTEGER :: ierr 89 INCLUDE 'netcdf.inc' 90 91 count(:)=(/ iip1,jjm,1,1 /) 92 start(:)=(/ 1,1,1,1 /) 93 94 !$OMP MASTER 95 IF (mpi_rank==0) THEN 96 ierr = NF_INQ_VARID(ncid, id, nvarid) 97 IF (ierr .NE. NF_NOERR) THEN 98 PRINT*, "Variable "//id//" n est pas definie" 99 CALL abort 100 ENDIF 101 ENDIF 102 !$OMP END MASTER 103 104 !$OMP MASTER 105 ALLOCATE(var_tmp(ijb_v:ije_v,ll)) 106 ALLOCATE(var_glo(ip1jm)) 107 !$OMP END MASTER 108 !$OMP BARRIER 109 110 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 111 DO l=1,ll 112 var_tmp(:,l)=var(:,l) 113 ENDDO 114 115 DO l=1,ll 116 CALL gather_field_v(var_tmp(:,l),var_glo,1) 117 IF (mpi_rank==0) THEN 118 !$OMP MASTER 119 start(3)=l 120 #ifdef NC_DOUBLE 121 ierr = NF_PUT_VARA_DOUBLE (ncid,nvarid,start,count,var_glo) 122 #else 123 ierr = NF_PUT_VARA_REAL (ncid,nvarid,start,count,var_glo) 124 #endif 125 !$OMP END MASTER 126 ENDIF 127 ENDDO 128 129 !$OMP BARRIER 130 !$OMP MASTER 131 DEALLOCATE(var_tmp) 132 DEALLOCATE(var_glo) 133 !$OMP END MASTER 134 !$OMP BARRIER 135 136 END SUBROUTINE dynredem_write_v 137 138 SUBROUTINE dynredem_read_u(ncid,id,var,ll) 139 USE dimensions_mod 140 USE parallel_lmdz 141 USE mod_hallo 142 IMPLICIT NONE 143 INTEGER :: ncid 144 CHARACTER(LEN=*) :: id 145 REAL :: var(ijb_u:ije_u,ll) 146 REAL,ALLOCATABLE,SAVE :: var_tmp(:,:) 147 REAL,ALLOCATABLE,SAVE :: var_glo(:) 148 INTEGER :: ll 149 INTEGER :: count(4) 150 INTEGER :: start(4) 151 INTEGER :: l 152 INTEGER :: nvarid 153 INTEGER :: ierr 154 INCLUDE 'netcdf.inc' 155 156 count(:)=(/ iip1,jjp1,1,1 /) 157 start(:)=(/ 1,1,1,1 /) 158 159 !$OMP MASTER 160 IF (mpi_rank==0) THEN 161 ierr = NF_INQ_VARID(ncid, id, nvarid) 162 IF (ierr .NE. NF_NOERR) THEN 163 PRINT*, "Variable "//id//" n est pas definie" 164 CALL abort 165 ENDIF 166 ENDIF 167 !$OMP END MASTER 168 169 !$OMP MASTER 170 ALLOCATE(var_tmp(ijb_u:ije_u,ll)) 171 ALLOCATE(var_glo(ip1jmp1)) 172 !$OMP END MASTER 173 !$OMP BARRIER 174 175 176 DO l=1,ll 177 IF (mpi_rank==0) THEN 178 !$OMP MASTER 179 start(3)=l 180 #ifdef NC_DOUBLE 181 ierr = NF_GET_VARA_DOUBLE (ncid,nvarid,start,count,var_glo) 182 #else 183 ierr = NF_GET_VARA_REAL (ncid,nvarid,start,count,var_glo) 184 #endif 185 !$OMP END MASTER 186 ENDIF 187 CALL scatter_field_u(var_glo,var_tmp(:,l),1) 188 ENDDO 189 190 !$OMP DO SCHEDULE(STATIC,OMP_CHUNK) 191 DO l=1,ll 192 var(:,l)=var_tmp(:,l) 193 ENDDO 194 195 !$OMP BARRIER 196 !$OMP MASTER 197 DEALLOCATE(var_tmp) 198 DEALLOCATE(var_glo) 199 !$OMP END MASTER 200 !$OMP BARRIER 201 202 END SUBROUTINE dynredem_read_u 203 187 IF(title/="") CALL err(NF90_PUT_ATT(ncid,nvarid,"title",title),var) 188 IF(PRESENT(units)) CALL err(NF90_PUT_ATT(ncid,nvarid,"units",units),var) 189 190 END SUBROUTINE cre_var 191 ! 192 !=============================================================================== 193 194 195 !=============================================================================== 196 ! 197 SUBROUTINE put_var(ncid,var,title,did,v,units) 198 ! 199 !=============================================================================== 200 IMPLICIT NONE 201 !=============================================================================== 202 ! Arguments: 203 INTEGER, INTENT(IN) :: ncid 204 CHARACTER(LEN=*), INTENT(IN) :: var, title 205 INTEGER, INTENT(IN) :: did(:) 206 REAL, INTENT(IN) :: v(:) 207 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: units 208 !=============================================================================== 209 INTEGER :: nd, k, nn(2) 210 IF( PRESENT(units)) CALL cre_var(ncid,var,title,did,units) 211 IF(.NOT.PRESENT(units)) CALL cre_var(ncid,var,title,did) 212 CALL err(NF90_ENDDEF(ncid)) 213 nd=SIZE(did) 214 DO k=1,nd; CALL err(NF90_INQUIRE_DIMENSION(ncid,did(k),len=nn(k))); END DO 215 IF(nd==1) CALL err(NF90_PUT_VAR(ncid,nvarid,RESHAPE(v,nn(1:1))),var) 216 IF(nd==2) CALL err(NF90_PUT_VAR(ncid,nvarid,RESHAPE(v,nn(1:2))),var) 217 CALL err(NF90_REDEF(ncid)) 218 END SUBROUTINE put_var 219 ! 220 !=============================================================================== 221 222 223 !=============================================================================== 224 ! 225 FUNCTION msg(typ,nam) 226 ! 227 !=============================================================================== 228 IMPLICIT NONE 229 !=============================================================================== 230 ! Arguments: 231 CHARACTER(LEN=256) :: msg !--- STANDARDIZED MESSAGE 232 CHARACTER(LEN=*), INTENT(IN) :: typ !--- TYPE OF OPERATION 233 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME 234 !=============================================================================== 235 SELECT CASE(typ) 236 CASE('open'); msg="Opening failed for <"//TRIM(fil)//">" 237 CASE('close'); msg="Closing failed for <"//TRIM(fil)//">" 238 CASE('get'); msg="Reading failed for <"//TRIM(nam)//">" 239 CASE('put'); msg="Writting failed for <"//TRIM(nam)//">" 240 CASE('inq'); msg="Missing field <"//TRIM(nam)//">" 241 CASE('fnd'); msg="Found field <"//TRIM(nam)//">" 242 END SELECT 243 msg=TRIM(msg)//" in file <"//TRIM(fil)//">" 244 245 END FUNCTION msg 246 ! 247 !=============================================================================== 248 249 250 !=============================================================================== 251 ! 252 SUBROUTINE err(ierr,typ,nam) 253 ! 254 !=============================================================================== 255 IMPLICIT NONE 256 !=============================================================================== 257 ! Arguments: 258 INTEGER, INTENT(IN) :: ierr !--- NetCDF ERROR CODE 259 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: typ !--- TYPE OF OPERATION 260 CHARACTER(LEN=*), OPTIONAL, INTENT(IN) :: nam !--- FIELD NAME 261 !=============================================================================== 262 IF(ierr==NF90_NoERR) RETURN 263 IF(.NOT.PRESENT(typ)) THEN 264 CALL ABORT_gcm(modname,NF90_STRERROR(ierr),ierr) 265 ELSE 266 CALL ABORT_gcm(modname,msg(typ,nam),ierr) 267 END IF 268 269 END SUBROUTINE err 270 ! 271 !=============================================================================== 272 204 273 END MODULE dynredem_mod 274 205 275 206 276 -
LMDZ5/branches/testing/libf/dyn3dmem/gcm.F90
r2298 r2408 10 10 USE parallel_lmdz 11 11 USE infotrac 12 #ifdef CPP_PHYS13 USE mod_interface_dyn_phys, ONLY: init_interface_dyn_phys14 #endif12 !#ifdef CPP_PHYS 13 ! USE mod_interface_dyn_phys, ONLY: init_interface_dyn_phys 14 !#endif 15 15 USE mod_hallo 16 16 USE Bands … … 18 18 USE control_mod 19 19 20 #ifdef INCA21 ! Only INCA needs these informations (from the Earth's physics)22 USE indice_sol_mod23 USE mod_phys_lmdz_omp_data, ONLY: klon_omp24 #endif25 26 20 #ifdef CPP_PHYS 27 ! USE mod_grid_phy_lmdz 28 ! USE mod_phys_lmdz_para, ONLY : klon_mpi_para_nb 29 ! USE dimphy 30 ! USE comgeomphy 21 USE iniphysiq_mod, ONLY: iniphysiq 31 22 #endif 32 23 IMPLICIT NONE … … 76 67 include "tracstoke.h" 77 68 78 #ifdef INCA79 ! Only INCA needs these informations (from the Earth's physics)80 !include "indicesol.h"81 #endif82 69 83 70 REAL zdtvr … … 155 142 call Read_Distrib 156 143 157 #ifdef CPP_PHYS158 CALL Init_Phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys)144 !#ifdef CPP_PHYS 145 ! CALL Init_Phys_lmdz(iim,jjp1,llm,mpi_size,distrib_phys) 159 146 !#endif 160 147 ! CALL set_bands 161 148 !#ifdef CPP_PHYS 162 CALL Init_interface_dyn_phys163 #endif149 ! CALL Init_interface_dyn_phys 150 !#endif 164 151 CALL barrier 165 152 … … 200 187 #endif 201 188 202 IF (type_trac == 'inca') THEN203 #ifdef INCA204 call init_const_lmdz( &205 nbtr,anneeref,dayref, &206 iphysiq,day_step,nday, &207 nbsrf, is_oce,is_sic, &208 is_ter,is_lic, calend)209 210 call init_inca_para( &211 iim,jjm+1,llm,klon_glo,mpi_size, &212 distrib_phys,COMM_LMDZ)213 #endif214 END IF215 189 216 190 !----------------------------------------------------------------------- … … 400 374 ! Physics: 401 375 #ifdef CPP_PHYS 402 CALL iniphysiq(iim,jjm,llm,daysec,day_ini,dtphys/nsplit_phys, & 403 rlatu,rlonv,aire,cu,cv,rad,g,r,cpp, & 376 CALL iniphysiq(iim,jjm,llm, & 377 distrib_phys(mpi_rank),comm_lmdz, & 378 daysec,day_ini,dtphys/nsplit_phys, & 379 rlatu,rlatv,rlonu,rlonv,aire,cu,cv,rad,g,r,cpp, & 404 380 iflag_phys) 405 381 #endif 406 382 ENDIF ! of IF ((iflag_phys==1).or.(iflag_phys>=100)) 407 383 408 409 !-----------------------------------------------------------------------410 ! Initialisation des dimensions d'INCA :411 ! --------------------------------------412 IF (type_trac == 'inca') THEN413 !$OMP PARALLEL414 #ifdef INCA415 CALL init_inca_dim(klon_omp,llm,iim,jjm, &416 rlonu,rlatu,rlonv,rlatv)417 #endif418 !$OMP END PARALLEL419 END IF420 384 421 385 !----------------------------------------------------------------------- -
LMDZ5/branches/testing/libf/dyn3dmem/leapfrog_loc.F
r2298 r2408 308 308 309 309 1 CONTINUE ! Matsuno Forward step begins here 310 !write(*,*) 'leapfrog 298: itau=',itau 310 311 c date: (NB: date remains unchanged for Backward step) 312 c ----- 313 311 314 jD_cur = jD_ref + day_ini - day_ref + & 312 & itau/day_step315 & (itau+1)/day_step 313 316 jH_cur = jH_ref + start_time + & 314 & mod(itau ,day_step)/float(day_step)317 & mod(itau+1,day_step)/float(day_step) 315 318 if (jH_cur > 1.0 ) then 316 319 jD_cur = jD_cur +1. … … 421 424 c----------------------------------------------------------------------- 422 425 423 c date: 426 c date: (NB: only leapfrog step requires recomputing date) 424 427 c ----- 425 428 429 IF (leapf) THEN 430 jD_cur = jD_ref + day_ini - day_ref + 431 & (itau+1)/day_step 432 jH_cur = jH_ref + start_time + 433 & mod(itau+1,day_step)/float(day_step) 434 if (jH_cur > 1.0 ) then 435 jD_cur = jD_cur +1. 436 jH_cur = jH_cur -1. 437 endif 438 ENDIF 426 439 427 440 c gestion des appels de la physique et des dissipations:
Note: See TracChangeset
for help on using the changeset viewer.