- Timestamp:
- 2014-09-24T14:03:02+02:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4765_CNRS_agrif/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r4624 r4785 125 125 !!---------------------------------------------------------------------- 126 126 USE agrif_util 127 USE par_oce ! ONLY : jpts127 USE par_oce 128 128 USE oce 129 129 IMPLICIT NONE … … 132 132 ! 1. Declaration of the type of variable which have to be interpolated 133 133 !--------------------------------------------------------------------- 134 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),e1u_id) 135 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/jpi,jpj/),e2v_id) 136 134 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),e1u_id) 135 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),e2v_id) 137 136 138 137 ! 2. Type of interpolation … … 167 166 USE nemogcm 168 167 USE sol_oce 168 USE lib_mpp 169 169 USE in_out_manager 170 170 USE agrif_opa_update … … 174 174 IMPLICIT NONE 175 175 ! 176 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tabtstemp177 REAL(wp), DIMENSION(:,:,: ), ALLOCATABLE :: tabuvtemp178 REAL(wp), DIMENSION(:,: ), ALLOCATABLE :: tab2d179 176 LOGICAL :: check_namelist 180 !!---------------------------------------------------------------------- 181 182 ALLOCATE( tabtstemp(jpi, jpj, jpk, jpts) ) 183 ALLOCATE( tabuvtemp(jpi, jpj, jpk) ) 184 ALLOCATE( tab2d(jpi, jpj) ) 185 177 CHARACTER(len=15) :: cl_check1, cl_check2, cl_check3 178 !!---------------------------------------------------------------------- 186 179 187 180 ! 1. Declaration of the type of variable which have to be interpolated … … 193 186 Agrif_SpecialValue=0. 194 187 Agrif_UseSpecialValue = .TRUE. 195 Call Agrif_Bc_variable(tabtstemp,tsn_id,calledweight=1.,procname=interptsn) 196 Call Agrif_Bc_variable(tabtstemp,tsa_id,calledweight=1.,procname=interptsn) 197 198 Call Agrif_Bc_variable(tabuvtemp,un_id,calledweight=1.,procname=interpu) 199 Call Agrif_Bc_variable(tabuvtemp,vn_id,calledweight=1.,procname=interpv) 200 Call Agrif_Bc_variable(tabuvtemp,ua_id,calledweight=1.,procname=interpun) 201 Call Agrif_Bc_variable(tabuvtemp,va_id,calledweight=1.,procname=interpvn) 202 203 Call Agrif_Bc_variable(tab2d,unb_id,calledweight=1.,procname=interpunb) 204 Call Agrif_Bc_variable(tab2d,vnb_id,calledweight=1.,procname=interpvnb) 205 Call Agrif_Bc_variable(tab2d,sshn_id,calledweight=1.,procname=interpsshn) 206 Agrif_UseSpecialValue = .FALSE. 188 CALL Agrif_Bc_variable(tsn_id,calledweight=1.,procname=interptsn) 189 CALL Agrif_Sponge 190 tabspongedone = .FALSE. 191 CALL Agrif_Bc_variable(tsn_sponge_id,calledweight=1.,procname=interptsn_sponge) 192 ! reset tsa to zero 193 tsa(:,:,:,:) = 0. 194 195 Agrif_UseSpecialValue = ln_spc_dyn 196 CALL Agrif_Bc_variable(un_interp_id,calledweight=1.,procname=interpun) 197 CALL Agrif_Bc_variable(vn_interp_id,calledweight=1.,procname=interpvn) 198 tabspongedone_u = .FALSE. 199 tabspongedone_v = .FALSE. 200 CALL Agrif_Bc_variable(un_sponge_id,calledweight=1.,procname=interpun_sponge) 201 tabspongedone_u = .FALSE. 202 tabspongedone_v = .FALSE. 203 CALL Agrif_Bc_variable(vn_sponge_id,calledweight=1.,procname=interpvn_sponge) 204 205 #if defined key_dynspg_ts 206 CALL Agrif_Bc_variable(sshn_id,calledweight=1.,procname=interpsshn) 207 CALL Agrif_Bc_variable(unb_id,calledweight=1.,procname=interpunb) 208 CALL Agrif_Bc_variable(vnb_id,calledweight=1.,procname=interpvnb) 209 CALL Agrif_Bc_variable(ub2b_interp_id,calledweight=1.,procname=interpub2b) 210 CALL Agrif_Bc_variable(vb2b_interp_id,calledweight=1.,procname=interpvb2b) 211 ubdy_w(:) = 0.e0 ; vbdy_w(:) = 0.e0 ; hbdy_w(:) =0.e0 212 ubdy_e(:) = 0.e0 ; vbdy_e(:) = 0.e0 ; hbdy_e(:) =0.e0 213 ubdy_n(:) = 0.e0 ; vbdy_n(:) = 0.e0 ; hbdy_n(:) =0.e0 214 ubdy_s(:) = 0.e0 ; vbdy_s(:) = 0.e0 ; hbdy_s(:) =0.e0 215 #endif 216 217 Agrif_UseSpecialValue = .FALSE. 218 ! reset velocities to zero 219 ua(:,:,:) = 0. 220 va(:,:,:) = 0. 207 221 208 222 ! 3. Some controls … … 210 224 check_namelist = .true. 211 225 212 IF( check_namelist ) THEN 226 IF( check_namelist ) THEN 213 227 214 228 ! Check time steps 215 IF( NINT(Agrif_Rhot()) * nint(rdt) /= Agrif_Parent(rdt) ) THEN 216 WRITE(*,*) 'incompatible time step between grids' 217 WRITE(*,*) 'parent grid value : ',Agrif_Parent(rdt) 218 WRITE(*,*) 'child grid value : ',nint(rdt) 219 WRITE(*,*) 'value on parent grid should be : ',rdt*Agrif_Rhot() 220 STOP 229 IF( nint(Agrif_Rhot()) * nint(rdt) .ne. Agrif_Parent(rdt) ) THEN 230 write(cl_check1,*) nint(Agrif_Parent(rdt)) 231 write(cl_check2,*) nint(rdt) 232 write(cl_check3,*) nint(Agrif_Parent(rdt)/Agrif_Rhot()) 233 CALL ctl_warn( 'incompatible time step between grids', & 234 & 'parent grid value : '//cl_check1 , & 235 & 'child grid value : '//cl_check2 , & 236 & 'value on child grid will be changed to : '//cl_check3 ) 237 rdt=Agrif_Parent(rdt)/Agrif_Rhot() 221 238 ENDIF 222 239 … … 224 241 IF( Agrif_IRhot() * (Agrif_Parent(nitend)- & 225 242 Agrif_Parent(nit000)+1) .ne. (nitend-nit000+1) ) THEN 226 WRITE(*,*) 'incompatible run length between grids' 227 WRITE(*,*) 'parent grid value : ',(Agrif_Parent(nitend)- & 228 Agrif_Parent(nit000)+1),' time step' 229 WRITE(*,*) 'child grid value : ', & 230 (nitend-nit000+1),' time step' 231 WRITE(*,*) 'value on child grid should be : ', & 232 Agrif_IRhot() * (Agrif_Parent(nitend)- & 233 Agrif_Parent(nit000)+1) 234 STOP 243 write(cl_check1,*) (Agrif_Parent(nit000)-1)*Agrif_IRhot() + 1 244 write(cl_check2,*) Agrif_Parent(nitend) *Agrif_IRhot() 245 CALL ctl_warn( 'incompatible run length between grids' , & 246 & ' nit000 on fine grid will be change to : '//cl_check1, & 247 & ' nitend on fine grid will be change to : '//cl_check2 ) 248 nit000 = (Agrif_Parent(nit000)-1)*Agrif_IRhot() + 1 249 nitend = Agrif_Parent(nitend) *Agrif_IRhot() 235 250 ENDIF 236 251 … … 254 269 ENDIF 255 270 ENDIF 256 271 ! 257 272 CALL Agrif_Update_tra(0) 258 273 CALL Agrif_Update_dyn(0) 259 274 ! 275 Agrif_UseSpecialValueInUpdate = .FALSE. 260 276 nbcline = 0 261 !262 DEALLOCATE(tabtstemp)263 DEALLOCATE(tabuvtemp)264 DEALLOCATE(tab2d)265 277 ! 266 278 END SUBROUTINE Agrif_InitValues_cont … … 281 293 ! 1. Declaration of the type of variable which have to be interpolated 282 294 !--------------------------------------------------------------------- 283 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts/),tsn_id) 284 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts/),tsa_id) 285 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/jpi,jpj,jpk,jpts/),tsb_id) 286 287 CALL agrif_declare_variable((/1,2,0/),(/2,3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/),un_id) 288 CALL agrif_declare_variable((/2,1,0/),(/3,2,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/),vn_id) 289 CALL agrif_declare_variable((/1,2,0/),(/2,3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/),ua_id) 290 CALL agrif_declare_variable((/2,1,0/),(/3,2,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj,jpk/),va_id) 291 292 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),unb_id) 293 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/jpi,jpj/),vnb_id) 294 CALL agrif_declare_variable((/2,2/),(/3,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),sshn_id) 295 CALL agrif_declare_variable((/2,2/),(/3,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),gcb_id) 296 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),ub2b_id) 297 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/jpi,jpj/),vb2b_id) 295 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/nlci,nlcj,jpk,jpts/),tsn_id) 296 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/nlci,nlcj,jpk,jpts/),tsn_sponge_id) 297 298 CALL agrif_declare_variable((/1,2,0/),(/2,3,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),un_interp_id) 299 CALL agrif_declare_variable((/2,1,0/),(/3,2,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),vn_interp_id) 300 CALL agrif_declare_variable((/1,2,0/),(/2,3,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),un_update_id) 301 CALL agrif_declare_variable((/2,1,0/),(/3,2,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),vn_update_id) 302 CALL agrif_declare_variable((/1,2,0/),(/2,3,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),un_sponge_id) 303 CALL agrif_declare_variable((/2,1,0/),(/3,2,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),vn_sponge_id) 304 305 CALL agrif_declare_variable((/2,2,0/),(/3,3,0/),(/'x','y','N'/),(/1,1,1/),(/nlci,nlcj,jpk/),e3t_id) 306 307 CALL agrif_declare_variable((/2,2,0,0/),(/3,3,0,0/),(/'x','y','N','N'/),(/1,1,1,1/),(/nlci,nlcj,jpk,3/),scales_t_id) 308 309 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),unb_id) 310 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),vnb_id) 311 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),ub2b_interp_id) 312 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),vb2b_interp_id) 313 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),ub2b_update_id) 314 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),vb2b_update_id) 315 316 CALL agrif_declare_variable((/2,2/),(/3,3/),(/'x','y'/),(/1,1/),(/nlci,nlcj/),sshn_id) 317 298 318 299 319 ! 2. Type of interpolation 300 320 !------------------------- 301 321 CALL Agrif_Set_bcinterp(tsn_id,interp=AGRIF_linear) 302 CALL Agrif_Set_bcinterp(tsa_id,interp=AGRIF_linear) 303 304 Call Agrif_Set_bcinterp(un_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 305 Call Agrif_Set_bcinterp(vn_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 306 307 Call Agrif_Set_bcinterp(ua_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 308 Call Agrif_Set_bcinterp(va_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 322 323 CALL Agrif_Set_bcinterp(un_interp_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 324 CALL Agrif_Set_bcinterp(vn_interp_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 325 326 CALL Agrif_Set_bcinterp(tsn_sponge_id,interp=AGRIF_linear) 309 327 310 328 CALL Agrif_Set_bcinterp(sshn_id,interp=AGRIF_linear) 311 Call Agrif_Set_bcinterp(unb_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 312 Call Agrif_Set_bcinterp(vnb_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 313 Call Agrif_Set_bcinterp(ub2b_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 314 Call Agrif_Set_bcinterp(vb2b_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 329 CALL Agrif_Set_bcinterp(unb_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 330 CALL Agrif_Set_bcinterp(vnb_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 331 CALL Agrif_Set_bcinterp(ub2b_interp_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 332 CALL Agrif_Set_bcinterp(vb2b_interp_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 333 334 335 CALL Agrif_Set_bcinterp(un_sponge_id,interp1=Agrif_linear,interp2=AGRIF_ppm) 336 CALL Agrif_Set_bcinterp(vn_sponge_id,interp1=AGRIF_ppm,interp2=Agrif_linear) 337 338 CALL Agrif_Set_bcinterp(e3t_id,interp=AGRIF_constant) 339 315 340 316 341 ! 3. Location of interpolation 317 342 !----------------------------- 318 Call Agrif_Set_bc(un_id,(/0,1/)) 319 Call Agrif_Set_bc(vn_id,(/0,1/)) 320 321 Call Agrif_Set_bc(sshn_id,(/0,1/)) 322 Call Agrif_Set_bc(unb_id,(/0,1/)) 323 Call Agrif_Set_bc(vnb_id,(/0,1/)) 324 Call Agrif_Set_bc(ub2b_id,(/0,1/)) 325 Call Agrif_Set_bc(vb2b_id,(/0,1/)) 326 327 Call Agrif_Set_bc(tsn_id,(/0,1/)) 328 Call Agrif_Set_bc(tsa_id,(/-3*Agrif_irhox(),0/)) 329 330 Call Agrif_Set_bc(ua_id,(/-2*Agrif_irhox(),0/)) 331 Call Agrif_Set_bc(va_id,(/-2*Agrif_irhox(),0/)) 343 CALL Agrif_Set_bc(tsn_id,(/0,1/)) 344 CALL Agrif_Set_bc(un_interp_id,(/0,1/)) 345 CALL Agrif_Set_bc(vn_interp_id,(/0,1/)) 346 347 CALL Agrif_Set_bc(tsn_sponge_id,(/-3*Agrif_irhox(),0/)) 348 CALL Agrif_Set_bc(un_sponge_id,(/-2*Agrif_irhox()-1,0/)) 349 CALL Agrif_Set_bc(vn_sponge_id,(/-2*Agrif_irhox()-1,0/)) 350 351 CALL Agrif_Set_bc(sshn_id,(/0,0/)) 352 CALL Agrif_Set_bc(unb_id ,(/0,0/)) 353 CALL Agrif_Set_bc(vnb_id ,(/0,0/)) 354 Call Agrif_Set_bc(ub2b_interp_id,(/0,0/)) 355 Call Agrif_Set_bc(vb2b_interp_id,(/0,0/)) 356 357 CALL Agrif_Set_bc(e3t_id,(/-3*Agrif_irhox(),0/)) ! if west and rhox=3: column 2 to 11 332 358 333 359 ! 5. Update type 334 360 !--------------- 335 C allAgrif_Set_Updatetype(tsn_id, update = AGRIF_Update_Average)336 Call Agrif_Set_Updatetype(tsb_id, update = AGRIF_Update_Average) 337 338 C all Agrif_Set_Updatetype(sshn_id, update = AGRIF_Update_Average)339 C all Agrif_Set_Updatetype(gcb_id,update = AGRIF_Update_Average)340 341 C all Agrif_Set_Updatetype(un_id,update1 = Agrif_Update_Copy, update2 = Agrif_Update_Average)342 Call Agrif_Set_Updatetype(vn_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Copy) 343 344 Call Agrif_Set_Updatetype( ub2b_id,update1 = Agrif_Update_Copy, update2 = Agrif_Update_Average)345 Call Agrif_Set_Updatetype(vb2b_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Copy) 346 361 CALL Agrif_Set_Updatetype(tsn_id, update = AGRIF_Update_Average) 362 363 CALL Agrif_Set_Updatetype(scales_t_id, update = AGRIF_Update_Average) 364 CALL Agrif_Set_Updatetype(un_update_id,update1 = Agrif_Update_Copy, update2 = Agrif_Update_Average) 365 CALL Agrif_Set_Updatetype(vn_update_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Copy) 366 367 CALL Agrif_Set_Updatetype(sshn_id, update = AGRIF_Update_Average) 368 369 Call Agrif_Set_Updatetype(ub2b_update_id,update1 = Agrif_Update_Copy, update2 = Agrif_Update_Average) 370 Call Agrif_Set_Updatetype(vb2b_update_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Copy) 371 372 ! 347 373 END SUBROUTINE agrif_declare_var 348 374 # endif … … 462 488 USE nemogcm 463 489 USE par_trc 490 USE lib_mpp 464 491 USE trc 465 492 USE in_out_manager … … 471 498 ! 472 499 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tabtrtemp 500 CHARACTER(len=10) :: cl_check1, cl_check2, cl_check3 473 501 LOGICAL :: check_namelist 474 502 !!---------------------------------------------------------------------- … … 494 522 495 523 IF( check_namelist ) THEN 496 # if defined offline524 # if defined key_offline 497 525 ! Check time steps 498 526 IF( nint(Agrif_Rhot()) * nint(rdt) .ne. Agrif_Parent(rdt) ) THEN 499 WRITE(*,*) 'incompatible time step between grids' 500 WRITE(*,*) 'parent grid value : ',Agrif_Parent(rdt) 501 WRITE(*,*) 'child grid value : ',nint(rdt) 502 WRITE(*,*) 'value on parent grid should be : ',rdt*Agrif_Rhot() 503 STOP 527 write(cl_check1,*) Agrif_Parent(rdt) 528 write(cl_check2,*) rdt 529 write(cl_check3,*) rdt*Agrif_Rhot() 530 CALL ctl_warn( 'incompatible time step between grids', & 531 & 'parent grid value : '//cl_check1 , & 532 & 'child grid value : '//cl_check2 , & 533 & 'value on child grid will be changed to & 534 & :'//cl_check3 ) 535 rdt=rdt*Agrif_Rhot() 504 536 ENDIF 505 537 … … 515 547 Agrif_IRhot() * (Agrif_Parent(nitend)- & 516 548 Agrif_Parent(nit000)+1) 517 STOP 549 CALL ctl_warn( 'incompatible run length between grids', & 550 & 'value on child grid will be change to ' & 551 & ) 552 553 518 554 ENDIF 519 555 … … 664 700 SELECT CASE( i ) 665 701 CASE(1) ; indglob = indloc + nimppt(nprocloc+1) - 1 666 CASE(2) ; indglob = indloc + njmppt(nprocloc+1) - 1 667 CASE (3) ; indglob = indloc668 CASE(4) ;indglob = indloc702 CASE(2) ; indglob = indloc + njmppt(nprocloc+1) - 1 703 CASE DEFAULT 704 indglob = indloc 669 705 END SELECT 670 706 ! 671 707 END SUBROUTINE Agrif_InvLoc 708 709 SUBROUTINE Agrif_get_proc_info( imin, imax, jmin, jmax ) 710 !!---------------------------------------------------------------------- 711 !! *** ROUTINE Agrif_get_proc_info *** 712 !!---------------------------------------------------------------------- 713 USE par_oce 714 IMPLICIT NONE 715 ! 716 INTEGER, INTENT(out) :: imin, imax 717 INTEGER, INTENT(out) :: jmin, jmax 718 !!---------------------------------------------------------------------- 719 ! 720 imin = nimppt(Agrif_Procrank+1) ! ????? 721 jmin = njmppt(Agrif_Procrank+1) ! ????? 722 imax = imin + jpi - 1 723 jmax = jmin + jpj - 1 724 ! 725 END SUBROUTINE Agrif_get_proc_info 726 727 SUBROUTINE Agrif_estimate_parallel_cost(imin, imax,jmin, jmax, nbprocs, grid_cost) 728 !!---------------------------------------------------------------------- 729 !! *** ROUTINE Agrif_estimate_parallel_cost *** 730 !!---------------------------------------------------------------------- 731 USE par_oce 732 IMPLICIT NONE 733 ! 734 INTEGER, INTENT(in) :: imin, imax 735 INTEGER, INTENT(in) :: jmin, jmax 736 INTEGER, INTENT(in) :: nbprocs 737 REAL(wp), INTENT(out) :: grid_cost 738 !!---------------------------------------------------------------------- 739 ! 740 grid_cost = REAL(imax-imin+1,wp)*REAL(jmax-jmin+1,wp) / REAL(nbprocs,wp) 741 ! 742 END SUBROUTINE Agrif_estimate_parallel_cost 743 672 744 673 745 # endif
Note: See TracChangeset
for help on using the changeset viewer.