Changeset 14336 for NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/DOM
- Timestamp:
- 2021-01-23T11:09:54+01:00 (3 years ago)
- Location:
- NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/DOM
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/DOM/dom_oce.F90
r14314 r14336 65 65 !! space domain parameters 66 66 !!---------------------------------------------------------------------- 67 INTEGER, PUBLIC :: jperio !: Global domain lateral boundary type (between 0 and 7) 68 ! ! = 0 closed ; = 1 cyclic East-West 69 ! ! = 2 cyclic North-South ; = 3 North fold T-point pivot 70 ! ! = 4 cyclic East-West AND North fold T-point pivot 71 ! ! = 5 North fold F-point pivot 72 ! ! = 6 cyclic East-West AND North fold F-point pivot 73 ! ! = 7 bi-cyclic East-West AND North-South 74 LOGICAL, PUBLIC :: l_Iperio, l_Jperio ! should we explicitely take care I/J periodicity 75 LOGICAL, PUBLIC :: l_NFoldT, l_NFoldF 67 LOGICAL , PUBLIC :: l_Iperio, l_Jperio ! i- j-periodicity 68 LOGICAL , PUBLIC :: l_NFold ! North Pole folding 69 CHARACTER(len=3), PUBLIC :: c_NFtype ! type of North pole Folding: T or F point 76 70 77 71 ! Tiling namelist -
NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/DOM/domain.F90
r14255 r14336 113 113 WRITE(numout,*) ' jpnj : ', jpnj, ' nn_hls : ', nn_hls 114 114 WRITE(numout,*) ' jpnij : ', jpnij 115 WRITE(numout,*) ' lateral boundary of the Global domain : jperio = ', jperio 116 SELECT CASE ( jperio ) 117 CASE( 0 ) ; WRITE(numout,*) ' (i.e. closed)' 118 CASE( 1 ) ; WRITE(numout,*) ' (i.e. cyclic east-west)' 119 CASE( 2 ) ; WRITE(numout,*) ' (i.e. cyclic north-south)' 120 CASE( 3 ) ; WRITE(numout,*) ' (i.e. north fold with T-point pivot)' 121 CASE( 4 ) ; WRITE(numout,*) ' (i.e. cyclic east-west and north fold with T-point pivot)' 122 CASE( 5 ) ; WRITE(numout,*) ' (i.e. north fold with F-point pivot)' 123 CASE( 6 ) ; WRITE(numout,*) ' (i.e. cyclic east-west and north fold with F-point pivot)' 124 CASE( 7 ) ; WRITE(numout,*) ' (i.e. cyclic east-west and north-south)' 125 CASE DEFAULT 126 CALL ctl_stop( 'dom_init: jperio is out of range' ) 127 END SELECT 115 WRITE(numout,*) ' lateral boundary of the Global domain:' 116 WRITE(numout,*) ' cyclic east-west :', l_Iperio 117 WRITE(numout,*) ' cyclic north-south :', l_Jperio 118 WRITE(numout,*) ' North Pole folding :', l_NFold 119 WRITE(numout,*) ' type of North pole Folding:', c_NFtype 128 120 WRITE(numout,*) ' Ocean model configuration used:' 129 WRITE(numout,*) ' cn_cfg = ', TRIM( cn_cfg ), ' nn_cfg = ', nn_cfg121 WRITE(numout,*) ' cn_cfg = ', TRIM( cn_cfg ), ' nn_cfg = ', nn_cfg 130 122 ENDIF 131 123 … … 622 614 623 615 624 SUBROUTINE domain_cfg( cd_cfg, kk_cfg, kpi, kpj, kpk, kperio)616 SUBROUTINE domain_cfg( cd_cfg, kk_cfg, kpi, kpj, kpk, ldIperio, ldJperio, ldNFold, cdNFtype ) 625 617 !!---------------------------------------------------------------------- 626 618 !! *** ROUTINE domain_cfg *** … … 630 622 !! ** Method : read the cn_domcfg NetCDF file 631 623 !!---------------------------------------------------------------------- 632 CHARACTER(len=*) , INTENT(out) :: cd_cfg ! configuration name 633 INTEGER , INTENT(out) :: kk_cfg ! configuration resolution 634 INTEGER , INTENT(out) :: kpi, kpj, kpk ! global domain sizes 635 INTEGER , INTENT(out) :: kperio ! lateral global domain b.c. 636 ! 637 INTEGER :: inum ! local integer 624 CHARACTER(len=*), INTENT(out) :: cd_cfg ! configuration name 625 INTEGER , INTENT(out) :: kk_cfg ! configuration resolution 626 INTEGER , INTENT(out) :: kpi, kpj, kpk ! global domain sizes 627 LOGICAL , INTENT(out) :: ldIperio, ldJperio ! i- and j- periodicity 628 LOGICAL , INTENT(out) :: ldNFold ! North pole folding 629 CHARACTER(len=1), INTENT(out) :: cdNFtype ! Folding type: T or F 630 ! 631 INTEGER :: inum, iperio ! local integer 638 632 REAL(wp) :: zorca_res ! local scalars 639 REAL(wp) :: zperio 633 REAL(wp) :: zperio, z01 ! - - 640 634 INTEGER, DIMENSION(4) :: idvar, idimsz ! size of dimensions 641 635 !!---------------------------------------------------------------------- … … 678 672 kpj = idimsz(2) 679 673 kpk = idimsz(3) 680 CALL iom_get( inum, 'jperio', zperio ) ; kperio = NINT( zperio ) 674 ! 675 IF( iom_varid( inum, 'jperio', ldstop = .FALSE. ) > 0 ) THEN ! keep compatibility with old version... 676 CALL iom_get( inum, 'jperio', zperio ) ; iperio = NINT( zperio ) 677 ldIperio = iperio == 1 .OR. iperio == 4 .OR. iperio == 6 .OR. iperio == 7 ! i-periodicity 678 ldJperio = iperio == 2 .OR. iperio == 7 ! j-periodicity 679 ldNFold = iperio >= 3 .OR. iperio <= 6 ! North pole folding 680 IF( iperio == 3 .OR. iperio == 4 ) THEN ; cdNFtype = 'T' ! folding at T point 681 ELSEIF( iperio == 5 .OR. iperio == 6 ) THEN ; cdNFtype = 'F' ! folding at F point 682 ELSE ; cdNFtype = '-' 683 ENDIF 684 ELSE 685 z01 = 0._wp ; IF( iom_varid( inum, 'Iperio', ldstop = .FALSE. ) > 0 ) CALL iom_get( inum, 'Iperio', z01 ) 686 ldIperio = NINT(z01) == 1 ! i-periodicity 687 z01 = 0._wp ; IF( iom_varid( inum, 'Jperio', ldstop = .FALSE. ) > 0 ) CALL iom_get( inum, 'Jperio', z01 ) 688 ldJperio = NINT(z01) == 1 ! j-periodicity 689 cdNFtype = '-' ! default definition 690 z01 = 0._wp ; IF( iom_varid( inum, 'NFoldT', ldstop = .FALSE. ) > 0 ) CALL iom_get( inum, 'NFoldT', z01 ) 691 IF( NINT(z01) == 1 ) cdNFtype = 'T' ! folding at T point 692 z01 = 0._wp ; IF( iom_varid( inum, 'NFoldF', ldstop = .FALSE. ) > 0 ) CALL iom_get( inum, 'NFoldF', z01 ) 693 IF( NINT(z01) == 1 ) cdNFtype = 'F' ! folding at T point 694 ldNFold = cdNFtype /= '-' ! North pole folding 695 ENDIF 681 696 CALL iom_close( inum ) 682 697 ! … … 686 701 WRITE(numout,*) ' Nj0glo = ', kpj 687 702 WRITE(numout,*) ' jpkglo = ', kpk 688 WRITE(numout,*) ' type of global domain lateral boundary jperio = ', kperio689 703 ENDIF 690 704 ! … … 733 747 ! 734 748 ! ! lateral boundary of the global domain 735 CALL iom_rstput( 0, 0, inum, 'jperio', REAL( jperio, wp), ktype = jp_i4 ) 749 CALL iom_rstput( 0, 0, inum, 'Iperio', REAL( COUNT( (/l_Iperio/) ), wp), ktype = jp_i1 ) 750 CALL iom_rstput( 0, 0, inum, 'Jperio', REAL( COUNT( (/l_Jperio/) ), wp), ktype = jp_i1 ) 751 CALL iom_rstput( 0, 0, inum, 'NFoldT', REAL( COUNT( (/c_NFtype == 'T'/) ), wp), ktype = jp_i1 ) 752 CALL iom_rstput( 0, 0, inum, 'NFoldF', REAL( COUNT( (/c_NFtype == 'F'/) ), wp), ktype = jp_i1 ) 736 753 ! 737 754 ! ! type of vertical coordinate -
NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/DOM/domwri.F90
r13295 r14336 75 75 CALL iom_open( TRIM(clnam), inum, ldwrt = .TRUE. ) 76 76 ! ! domain characteristics 77 CALL iom_rstput( 0, 0, inum, 'jperio', REAL( jperio, wp), ktype = jp_i4 ) 77 CALL iom_rstput( 0, 0, inum, 'Iperio', REAL( COUNT( (/l_Iperio/) ), wp), ktype = jp_i1 ) 78 CALL iom_rstput( 0, 0, inum, 'Jperio', REAL( COUNT( (/l_Jperio/) ), wp), ktype = jp_i1 ) 79 CALL iom_rstput( 0, 0, inum, 'NFoldT', REAL( COUNT( (/c_NFtype == 'T'/) ), wp), ktype = jp_i1 ) 80 CALL iom_rstput( 0, 0, inum, 'NFoldF', REAL( COUNT( (/c_NFtype == 'F'/) ), wp), ktype = jp_i1 ) 78 81 ! ! type of vertical coordinate 79 82 IF( ln_zco ) THEN ; izco = 1 ; ELSE ; izco = 0 ; ENDIF -
NEMO/branches/2021/dev_r14312_MPI_Interface/src/OCE/DOM/domzgr.F90
r13295 r14336 115 115 ! 116 116 zmsk(:,:) = 1._wp ! default: no closed boundaries 117 IF( jperio == 0 .OR. jperio == 2 .OR. jperio == 3 .OR. jperio == 5 ) THEN ! E-W closed117 IF( .NOT. l_Iperio ) THEN ! E-W closed: 118 118 zmsk( mi0( 1+nn_hls):mi1( 1+nn_hls),:) = 0._wp ! first column of inner global domain at 0 119 119 zmsk( mi0(jpiglo-nn_hls):mi1(jpiglo-nn_hls),:) = 0._wp ! last column of inner global domain at 0 120 120 ENDIF 121 IF( .NOT. ( jperio == 2 .OR. jperio == 7 ) ) THEN ! S closed121 IF( .NOT. l_Jperio ) THEN ! S closed: 122 122 zmsk(:,mj0( 1+nn_hls):mj1( 1+nn_hls) ) = 0._wp ! first line of inner global domain at 0 123 123 ENDIF 124 IF( jperio == 0 .OR. jperio == 1 ) THEN ! N closed124 IF( .NOT. ( l_Jperio .OR. l_NFold ) ) THEN ! N closed: 125 125 zmsk(:,mj0(jpjglo-nn_hls):mj1(jpjglo-nn_hls) ) = 0._wp ! last line of inner global domain at 0 126 126 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.