Changeset 1605 for trunk/NEMO/NST_SRC/agrif_user.F90
- Timestamp:
- 2009-08-11T14:33:40+02:00 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/NST_SRC/agrif_user.F90
r1465 r1605 7 7 8 8 SUBROUTINE Agrif_InitWorkspace 9 !!------------------------------------------ 10 !! *** ROUTINE Agrif_InitWorkspace ***11 !!------------------------------------------ 9 !!---------------------------------------------------------------------- 10 !! *** ROUTINE Agrif_InitWorkspace *** 11 !!---------------------------------------------------------------------- 12 12 USE par_oce 13 13 USE dom_oce 14 14 USE Agrif_Util 15 15 !! 16 16 IMPLICIT NONE 17 17 !! 18 18 #if defined key_mpp_dyndist 19 19 CHARACTER(len=20) :: namelistname 20 20 INTEGER nummpp 21 NAMELIST/nam_mpp_dyndist/jpni,jpnj,jpnij 22 23 IF (Agrif_Nbstepint() .EQ. 0) THEN 21 NAMELIST/nammpp_dyndist/ jpni, jpnj, jpnij 22 #endif 23 !!---------------------------------------------------------------------- 24 25 #if defined key_mpp_dyndist 26 ! MPP dynamical distribution : read the processor cutting in the namelist 27 IF( Agrif_Nbstepint() == 0 ) THEN 24 28 nummpp = Agrif_Get_Unit() 25 29 namelistname='namelist' 26 IF (.NOT. Agrif_Root()) namelistname=TRIM(Agrif_CFixed())//'_namelist' 27 OPEN(nummpp,file=namelistname,status='OLD',form='formatted') 28 READ (nummpp,nam_mpp_dyndist) 30 IF(.NOT. Agrif_Root() ) namelistname=TRIM(Agrif_CFixed())//'_namelist' 31 ! 32 OPEN (nummpp,file=namelistname,status='OLD',form='formatted') 33 READ (nummpp,nammpp_dyndist) 29 34 CLOSE(nummpp) 30 35 ENDIF … … 32 37 33 38 IF( .NOT. Agrif_Root() ) THEN 34 jpiglo = nbcellsx + 2 + 2*nbghostcells35 jpjglo = nbcellsy + 2 + 2*nbghostcells36 jpi = ( jpiglo-2*jpreci + (jpni-1+0) ) / jpni + 2*jpreci37 jpj = ( jpjglo-2*jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj38 jpim1 = jpi-139 jpjm1 = jpj-140 jpkm1 = jpk-141 jpij = jpi*jpj42 jpidta = jpiglo43 jpjdta = jpjglo39 jpiglo = nbcellsx + 2 + 2*nbghostcells 40 jpjglo = nbcellsy + 2 + 2*nbghostcells 41 jpi = ( jpiglo-2*jpreci + (jpni-1+0) ) / jpni + 2*jpreci 42 jpj = ( jpjglo-2*jprecj + (jpnj-1+0) ) / jpnj + 2*jprecj 43 jpim1 = jpi-1 44 jpjm1 = jpj-1 45 jpkm1 = jpk-1 46 jpij = jpi*jpj 47 jpidta = jpiglo 48 jpjdta = jpjglo 44 49 jpizoom = 1 45 50 jpjzoom = 1 46 nperio = 047 jperio = 051 nperio = 0 52 jperio = 0 48 53 ENDIF 49 54 ! 50 55 END SUBROUTINE Agrif_InitWorkspace 51 56 52 !53 57 #if ! defined key_off_tra 54 58 55 59 SUBROUTINE Agrif_InitValues 56 !!------------------------------------------ 57 !! *** ROUTINE Agrif_InitValues *** 58 !! 59 !! ** Purpose :: Declaration of variables to 60 !! be interpolated 61 !!------------------------------------------ 60 !!---------------------------------------------------------------------- 61 !! *** ROUTINE Agrif_InitValues *** 62 !! 63 !! ** Purpose :: Declaration of variables to be interpolated 64 !!---------------------------------------------------------------------- 62 65 USE Agrif_Util 63 66 USE oce … … 78 81 USE agrif_top_interp 79 82 USE agrif_top_sponge 80 83 !! 81 84 IMPLICIT NONE 82 85 !! 83 86 REAL(wp) :: tabtemp(jpi,jpj,jpk) 84 87 #if defined key_top … … 86 89 #endif 87 90 LOGICAL check_namelist 91 !!---------------------------------------------------------------------- 88 92 89 93 ! 0. Initializations … … 313 317 #endif 314 318 nbcline = 0 315 319 ! 316 320 END SUBROUTINE Agrif_InitValues 317 !318 321 319 322 #else 323 320 324 SUBROUTINE Agrif_InitValues 321 !!------------------------------------------ 322 !! *** ROUTINE Agrif_InitValues *** 323 !! 324 !! ** Purpose :: Declaration of variables to 325 !! be interpolated 326 !!------------------------------------------ 325 !!---------------------------------------------------------------------- 326 !! *** ROUTINE Agrif_InitValues *** 327 !! 328 !! ** Purpose :: Declaration of variables to be interpolated 329 !!---------------------------------------------------------------------- 327 330 USE Agrif_Util 328 331 USE oce … … 334 337 USE agrif_top_interp 335 338 USE agrif_top_sponge 336 339 !! 337 340 IMPLICIT NONE 338 341 !! 339 342 REAL(wp) :: tabtrtemp(jpi,jpj,jpk,jptra) 340 343 LOGICAL check_namelist 344 !!---------------------------------------------------------------------- 341 345 342 346 ! 0. Initializations … … 441 445 CALL Agrif_Update_trc(0) 442 446 nbcline_trc = 0 443 447 ! 444 448 END SUBROUTINE Agrif_InitValues 449 445 450 #endif 446 451 447 SUBROUTINE Agrif_detect(g,sizex)448 !!------------------------------------------ 452 SUBROUTINE Agrif_detect( g, sizex ) 453 !!---------------------------------------------------------------------- 449 454 !! *** ROUTINE Agrif_detect *** 450 !!------------------------------------------ 455 !!---------------------------------------------------------------------- 451 456 USE Agrif_Types 452 457 !! 453 458 INTEGER, DIMENSION(2) :: sizex 454 459 INTEGER, DIMENSION(sizex(1),sizex(2)) :: g 455 456 Return 457 458 End SUBROUTINE Agrif_detect 460 !!---------------------------------------------------------------------- 461 ! 462 RETURN 463 ! 464 END SUBROUTINE Agrif_detect 465 459 466 460 467 SUBROUTINE agrif_opa_init 461 !!--------------------------------------------- 462 !! *** ROUTINE agrif_init ***463 !!--------------------------------------------- 468 !!---------------------------------------------------------------------- 469 !! *** ROUTINE agrif_init *** 470 !!---------------------------------------------------------------------- 464 471 USE agrif_oce 465 472 USE in_out_manager 466 473 !! 467 474 IMPLICIT NONE 468 469 NAMELIST/namagrif/ nbclineupdate, visc_tra, visc_dyn, ln_spc_dyn 470 471 REWIND ( numnam ) 472 READ ( numnam, namagrif ) 473 IF(lwp) THEN 475 !! 476 NAMELIST/namagrif/ nn_cln_update, rn_sponge_tra, rn_sponge_dyn, ln_spc_dyn 477 !!---------------------------------------------------------------------- 478 479 REWIND( numnam ) ! Read namagrif namelist 480 READ ( numnam, namagrif ) 481 ! 482 IF(lwp) THEN ! control print 474 483 WRITE(numout,*) 475 WRITE(numout,*) 'agrif_opa_init : agrifparameters'484 WRITE(numout,*) 'agrif_opa_init : AGRIF parameters' 476 485 WRITE(numout,*) '~~~~~~~~~~~~' 477 WRITE(numout,*) ' Namelist namagrif : set agrifparameters'478 WRITE(numout,*) ' baroclinic update frequency = ', nbclineupdate479 WRITE(numout,*) ' sponge coefficient for tracers = ', visc_tra480 WRITE(numout,*) ' sponge coefficient for dynamics = ', visc_dyn481 WRITE(numout,*) ' use special values for dynamics =', ln_spc_dyn486 WRITE(numout,*) ' Namelist namagrif : set AGRIF parameters' 487 WRITE(numout,*) ' baroclinic update frequency nn_cln_update = ', nn_cln_update 488 WRITE(numout,*) ' sponge coefficient for tracers rn_sponge_tra = ', rn_sponge_tra, ' s' 489 WRITE(numout,*) ' sponge coefficient for dynamics rn_sponge_tra = ', rn_sponge_dyn, ' s' 490 WRITE(numout,*) ' use special values for dynamics ln_spc_dyn = ', ln_spc_dyn 482 491 WRITE(numout,*) 483 492 ENDIF 484 493 ! 494 ! convert DOCTOR namelist name into OLD names 495 nbclineupdate = nn_cln_update 496 visc_tra = rn_sponge_tra 497 visc_dyn = rn_sponge_dyn 498 ! 485 499 END SUBROUTINE agrif_opa_init 486 #if defined key_mpp_mpi 487 SUBROUTINE Agrif_InvLoc(indloc,nprocloc,i,indglob) 488 !!------------------------------------------ 489 !! *** ROUTINE Agrif_detect *** 490 !!------------------------------------------ 500 501 # if defined key_mpp_mpi 502 503 SUBROUTINE Agrif_InvLoc( indloc, nprocloc, i, indglob ) 504 !!---------------------------------------------------------------------- 505 !! *** ROUTINE Agrif_detect *** 506 !!---------------------------------------------------------------------- 491 507 USE dom_oce 492 508 !! 493 509 IMPLICIT NONE 494 510 !! 495 511 INTEGER :: indglob,indloc,nprocloc,i 496 512 !!---------------------------------------------------------------------- 513 ! 497 514 SELECT CASE(i) 498 515 CASE(1) … … 505 522 indglob = indloc 506 523 END SELECT 507 524 ! 508 525 END SUBROUTINE Agrif_InvLoc 509 #endif 526 527 # endif 528 510 529 #else 511 530 SUBROUTINE Subcalledbyagrif 512 !!------------------------------------------ 531 !!---------------------------------------------------------------------- 513 532 !! *** ROUTINE Subcalledbyagrif *** 514 !!------------------------------------------ 533 !!---------------------------------------------------------------------- 515 534 WRITE(*,*) 'Impossible to be here' 516 535 END SUBROUTINE Subcalledbyagrif
Note: See TracChangeset
for help on using the changeset viewer.