Changeset 2224
- Timestamp:
- 2010-10-12T16:04:22+02:00 (14 years ago)
- Location:
- branches/DEV_r2106_LOCEAN2010/NEMO
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/DEV_r2106_LOCEAN2010/NEMO/NST_SRC/agrif_user.F90
r2104 r2224 101 101 #endif 102 102 103 Call opa_init ! Initializations of each fine grid104 Call agrif_opa_init105 106 103 ! Specific fine grid Initializations 107 104 #if defined key_tradmp || defined key_esopa … … 113 110 lk_obc = .FALSE. 114 111 #endif 112 113 Call opa_init ! Initializations of each fine grid 114 Call agrif_opa_init 115 115 116 ! 1. Declaration of the type of variable which have to be interpolated 116 117 !--------------------------------------------------------------------- -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/DOM/phycst.F90
r2004 r2224 66 66 REAL(wp), PUBLIC :: rcpsn = 6.9069e+5_wp !: density times specific heat for snow 67 67 REAL(wp), PUBLIC :: rcpic = 1.8837e+6_wp !: volumetric latent heat fusion of sea ice 68 REAL(wp), PUBLIC :: lfus = 0.3337e+6 !: latent heat of fusion of fresh ice (J.kg-1) 68 69 REAL(wp), PUBLIC :: xlsn = 110.121e+6_wp !: volumetric latent heat fusion of snow 69 70 REAL(wp), PUBLIC :: xlic = 300.33e+6_wp !: volumetric latent heat fusion of ice -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/IOM/prtctl.F90
r1613 r2224 120 120 IF( PRESENT(tab2d_1) ) ztab2d_1(:,:) = tab2d_1(:,:) 121 121 IF( PRESENT(tab2d_2) ) ztab2d_2(:,:) = tab2d_2(:,:) 122 IF( PRESENT(tab3d_1) ) ztab3d_1(:,:, :)= tab3d_1(:,:,:)123 IF( PRESENT(tab3d_2) ) ztab3d_2(:,:, :)= tab3d_2(:,:,:)122 IF( PRESENT(tab3d_1) ) ztab3d_1(:,:,1:kdir)= tab3d_1(:,:,:) 123 IF( PRESENT(tab3d_2) ) ztab3d_2(:,:,1:kdir)= tab3d_2(:,:,:) 124 124 IF( PRESENT(mask1) ) zmask1 (:,:,:)= mask1 (:,:,:) 125 125 IF( PRESENT(mask2) ) zmask2 (:,:,:)= mask2 (:,:,:) -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/OBC/obc_par.F90
r1970 r2224 47 47 !! open boundary parameter 48 48 !!--------------------------------------------------------------------- 49 INTEGER :: & !: time dimension of the BCS fields on input49 INTEGER, PARAMETER :: & !: time dimension of the BCS fields on input 50 50 jptobc = 2 51 51 !! * EAST open boundary 52 LOGICAL :: & !:52 LOGICAL, PARAMETER :: & !: 53 53 lp_obc_east = .FALSE. !: to active or not the East open boundary 54 INTEGER :: & 54 INTEGER & 55 #if !defined key_agrif 56 , PARAMETER & 57 #endif 58 :: & 55 59 jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) 56 60 jpjed = 2, & !: j-starting indice of the East open boundary (must be land T-point) … … 60 64 61 65 !! * WEST open boundary 62 LOGICAL :: & !:66 LOGICAL, PARAMETER :: & !: 63 67 lp_obc_west = .FALSE. !: to active or not the West open boundary 64 INTEGER :: & !: 68 INTEGER & 69 #if !defined key_agrif 70 , PARAMETER & 71 #endif 72 :: & 65 73 jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) 66 74 jpjwd = 2, & !: j-starting indice of the West open boundary (must be land T-point) … … 70 78 71 79 !! * NORTH open boundary 72 LOGICAL :: & !:80 LOGICAL, PARAMETER :: & !: 73 81 lp_obc_north = .FALSE. !: to active or not the North open boundary 74 INTEGER :: & !: 82 INTEGER & 83 #if !defined key_agrif 84 , PARAMETER & 85 #endif 86 :: & 75 87 jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) 76 88 jpind = 2, & !: i-starting indice of the North open boundary (must be land T-point) … … 80 92 81 93 !! * SOUTH open boundary 82 LOGICAL :: & !:94 LOGICAL, PARAMETER :: & !: 83 95 lp_obc_south = .FALSE. !: to active or not the South open boundary 84 INTEGER :: & !: 96 INTEGER & 97 #if !defined key_agrif 98 , PARAMETER & 99 #endif 100 :: & 85 101 jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) 86 102 jpisd = 2, & !: i-starting indice of the South open boundary (must be land T-point) -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/OBC/obcfla.F90
r2004 r2224 78 78 !!------------------------------------------------------------------------------ 79 79 !! * Local declaration 80 INTEGER :: ji, jj , jk! dummy loop indices80 INTEGER :: ji, jj ! dummy loop indices 81 81 !!------------------------------------------------------------------------------ 82 82 … … 85 85 ua_e(ji,jj) = ( ubtfoe(jj) * hur(ji,jj) + sqrt( grav*hur(ji,jj) ) & 86 86 & * ( ( sshn_e(ji,jj) + sshn_e(ji+1,jj) ) * 0.5 & 87 & - sshfoe(jj) ) ) * uemsk(jj, jk)87 & - sshfoe(jj) ) ) * uemsk(jj,1) 88 88 END DO 89 89 END DO … … 95 95 ssha_e(ji,jj) = ssha_e(ji,jj) * ( 1. - temsk(jj,1) ) & 96 96 & + temsk(jj,1) * sshfoe(jj) 97 va_e(ji,jj) = vbtfoe(jj) * hvr(ji,jj) * uemsk(jj, jk)97 va_e(ji,jj) = vbtfoe(jj) * hvr(ji,jj) * uemsk(jj,1) 98 98 END DO 99 99 END DO … … 114 114 !!------------------------------------------------------------------------------ 115 115 !! * Local declaration 116 INTEGER :: ji, jj , jk! dummy loop indices116 INTEGER :: ji, jj ! dummy loop indices 117 117 !!------------------------------------------------------------------------------ 118 118 … … 121 121 ua_e(ji,jj) = ( ubtfow(jj) * hur(ji,jj) - sqrt( grav * hur(ji,jj) ) & 122 122 & * ( ( sshn_e(ji,jj) + sshn_e(ji+1,jj) ) * 0.5 & 123 & - sshfow(jj) ) ) * uwmsk(jj, jk)124 va_e(ji,jj) = vbtfow(jj) * hvr(ji,jj) * uwmsk(jj, jk)123 & - sshfow(jj) ) ) * uwmsk(jj,1) 124 va_e(ji,jj) = vbtfow(jj) * hvr(ji,jj) * uwmsk(jj,1) 125 125 END DO 126 126 DO jj = 1, jpj … … 147 147 !!------------------------------------------------------------------------------ 148 148 !! * Local declaration 149 INTEGER :: ji, jj , jk! dummy loop indices149 INTEGER :: ji, jj ! dummy loop indices 150 150 !!------------------------------------------------------------------------------ 151 151 … … 154 154 va_e(ji,jj) = ( vbtfon(ji) * hvr(ji,jj) + sqrt( grav * hvr(ji,jj) ) & 155 155 & * ( ( sshn_e(ji,jj) + sshn_e(ji,jj+1) ) * 0.5 & 156 & - sshfon(ji) ) ) * vnmsk(ji, jk)156 & - sshfon(ji) ) ) * vnmsk(ji,1) 157 157 END DO 158 158 END DO … … 164 164 ssha_e(ji,jj) = ssha_e(ji,jj) * ( 1. - tnmsk(ji,1) ) & 165 165 & + sshfon(ji) * tnmsk(ji,1) 166 ua_e(ji,jj) = ubtfon(ji) * hur(ji,jj) * vnmsk(ji, jk)166 ua_e(ji,jj) = ubtfon(ji) * hur(ji,jj) * vnmsk(ji,1) 167 167 END DO 168 168 END DO … … 182 182 !!------------------------------------------------------------------------------ 183 183 !! * Local declaration 184 INTEGER :: ji, jj , jk! dummy loop indices184 INTEGER :: ji, jj ! dummy loop indices 185 185 186 186 !!------------------------------------------------------------------------------ … … 190 190 va_e(ji,jj) = ( vbtfos(ji) * hvr(ji,jj) - sqrt( grav * hvr(ji,jj) ) & 191 191 & * ( ( sshn_e(ji,jj) + sshn_e(ji,jj+1) ) * 0.5 & 192 & - sshfos(ji) ) ) * vsmsk(ji, jk)193 ua_e(ji,jj) = ubtfos(ji) * hur(ji,jj) * vsmsk(ji, jk)192 & - sshfos(ji) ) ) * vsmsk(ji,1) 193 ua_e(ji,jj) = ubtfos(ji) * hur(ji,jj) * vsmsk(ji,1) 194 194 END DO 195 195 DO ji = 1, jpi -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/OBC/obcini.F90
r2200 r2224 62 62 NAMELIST/namobc/ rn_dpein, rn_dpwin, rn_dpnin, rn_dpsin, & 63 63 & rn_dpeob, rn_dpwob, rn_dpnob, rn_dpsob, & 64 & rn_volemp, nn_obcdta, cn_obcdta, rn_volemp,&64 & rn_volemp, nn_obcdta, cn_obcdta, & 65 65 & ln_obc_clim, ln_vol_cst, ln_obc_fla 66 66 !!---------------------------------------------------------------------- … … 149 149 ENDIF 150 150 151 IF( nbobc /= 0.AND. jperio /= 0 ) &151 IF( nbobc >= 2 .AND. jperio /= 0 ) & 152 152 & CALL ctl_stop( ' Cyclic or symmetric, and open boundary condition are not compatible' ) 153 153 … … 437 437 END DO 438 438 END IF 439 440 439 IF( lp_obc_north ) THEN ! ... North open boundary lateral surface 441 440 DO jj = njn0, njn1 -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/OBC/obctra.F90
r1152 r2224 490 490 zin = sign( 1., -1.* z05cx ) 491 491 zin = 0.5*( zin + abs(zin) ) 492 ztau = (1.-zin ) + zin * rtaus492 ztau = (1.-zin ) * rtausin + zin * rtaus 493 493 z05cx = z05cx * zin 494 494 495 !... update (ta,sa) with radiative or climatological (t, s) 495 496 ta(ji,jj,jk) = ta(ji,jj,jk) * (1.-tsmsk(ji,jk)) + & -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/SBC/cpl_oasis3.F90
r1698 r2224 27 27 USE mod_prism_proto ! OASIS3 prism module 28 28 USE mod_prism_def_partition_proto! OASIS3 prism module for partitioning 29 USE mod_prism_grids_writing ! OASIS3 prism module for writing grid files30 29 USE mod_prism_put_proto ! OASIS3 prism module for snding 31 30 USE mod_prism_get_proto ! OASIS3 prism module for receiving 32 USE mod_prism_grids_writing ! OASIS3 prism module for writing grids33 31 USE par_oce ! ocean parameters 34 32 USE dom_oce ! ocean space and time domain -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/SBC/sbccpl.F90
r1970 r2224 40 40 USE restart ! 41 41 USE oce , ONLY : tn, un, vn 42 USE phycst, ONLY : rt0, rcp43 42 USE albedo ! 44 43 USE in_out_manager ! I/O manager … … 153 152 INTEGER , DIMENSION( jprcv) :: nrcvinfo ! OASIS info argument 154 153 154 #if ! defined key_lim2 && ! defined key_lim3 155 ! quick patch to be able to run the coupled model without sea-ice... 156 INTEGER, PARAMETER :: jpl = 1 157 REAL(wp), DIMENSION(jpi,jpj ) :: hicif, hsnif, u_ice, v_ice,fr1_i0,fr2_i0 158 REAL(wp), DIMENSION(jpi,jpj,jpl) :: tn_ice, alb_ice 159 REAL(wp) :: lfus 160 #endif 161 155 162 !! Substitution 156 163 # include "vectopt_loop_substitute.h90" … … 254 261 255 262 ! default definitions of srcv 256 srcv(:)%laction = .FALSE. ; srcv(:)%clgrid = 'T' ; srcv(:)%nsgn = 1 263 srcv(:)%laction = .FALSE. ; srcv(:)%clgrid = 'T' ; srcv(:)%nsgn = 1. 257 264 258 265 ! ! ------------------------- ! … … 439 446 440 447 ! default definitions of nsnd 441 ssnd(:)%laction = .FALSE. ; ssnd(:)%clgrid = 'T' ; ssnd(:)%nsgn = 1 448 ssnd(:)%laction = .FALSE. ; ssnd(:)%clgrid = 'T' ; ssnd(:)%nsgn = 1. 442 449 443 450 ! ! ------------------------- ! … … 492 499 ssnd(jps_ocz1)%clname = 'O_OCurz1' ; ssnd(jps_ivz1)%clname = 'O_IVelz1' 493 500 ! 494 ssnd(jps_ocx1:jps_ivz1)%nsgn = -1 501 ssnd(jps_ocx1:jps_ivz1)%nsgn = -1. ! vectors: change of the sign at the north fold 495 502 496 503 IF( cn_snd_crt(4) /= 'T' ) CALL ctl_stop( 'cn_snd_crt(4) must be equal to T' ) … … 714 721 ! ! non solar heat flux over the ocean (qns) 715 722 IF( srcv(jpr_qnsoce)%laction ) qns(:,:) = frcv(:,:,jpr_qnsoce) 716 IF( srcv(jpr_qnsmix)%laction ) qns(:,:) = frcv(:,:,jpr_qnsmix) 717 qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * lfus ! add the latent heat of solid precip. melting 723 IF( srcv(jpr_qnsmix)%laction ) qns(:,:) = frcv(:,:,jpr_qnsmix) 724 ! add the latent heat of solid precip. melting 725 IF( srcv(jpr_snow )%laction ) qns(:,:) = qns(:,:) - frcv(:,:,jpr_snow) * lfus 718 726 719 727 ! ! solar flux over the ocean (qsr) -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r1715 r2224 180 180 ENDIF 181 181 #if defined key_coupled 182 IF( ksbc == 5 ) CALL sbc_cpl_ice_flx( frld ,&182 IF( ksbc == 5 ) CALL sbc_cpl_ice_flx( reshape( frld, (/jpi,jpj,1/) ), & 183 183 & qns_tot, qns_ice, qsr_tot , qsr_ice, & 184 184 & emp_tot, emp_ice, dqns_ice, sprecip, & -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/SOL/solmat.F90
r1970 r2224 80 80 ENDIF 81 81 82 #if defined key_dynspg_flt && ! defined key_obc 82 #if defined key_dynspg_flt 83 # if ! defined key_obc 83 84 84 85 DO jj = 2, jpjm1 ! matrix of free surface elliptic system … … 97 98 END DO 98 99 END DO 99 100 # elif defined key_dynspg_flt && defined key_obc 101 IF( Agrif_Root() ) THEN 102 DO jj = 2, jpjm1 ! matrix of free surface elliptic system with open boundaries 103 DO ji = 2, jpim1 104 zcoef = z2dt * z2dt * grav * bmask(ji,jj) 105 ! ! south coefficient 106 IF( lp_obc_south .AND. ( jj == njs0p1 ) ) THEN 107 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)*(1.-vsmsk(ji,1)) 108 ELSE 109 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 110 END IF 111 gcp(ji,jj,1) = zcoefs 112 ! 113 ! ! west coefficient 114 IF( lp_obc_west .AND. ( ji == niw0p1 ) ) THEN 115 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)*(1.-uwmsk(jj,1)) 116 ELSE 117 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 118 END IF 119 gcp(ji,jj,2) = zcoefw 120 ! 121 ! ! east coefficient 122 IF( lp_obc_east .AND. ( ji == nie0 ) ) THEN 123 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)*(1.-uemsk(jj,1)) 124 ELSE 125 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 126 END IF 127 gcp(ji,jj,3) = zcoefe 128 ! 129 ! ! north coefficient 130 IF( lp_obc_north .AND. ( jj == njn0 ) ) THEN 131 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj)*(1.-vnmsk(ji,1)) 132 ELSE 100 # else 101 IF ( Agrif_Root() ) THEN 102 DO jj = 2, jpjm1 ! matrix of free surface elliptic system with open boundaries 103 DO ji = 2, jpim1 104 zcoef = z2dt * z2dt * grav * bmask(ji,jj) 105 ! ! south coefficient 106 IF( lp_obc_south .AND. ( jj == njs0p1 ) ) THEN 107 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)*(1.-vsmsk(ji,1)) 108 ELSE 109 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 110 END IF 111 gcp(ji,jj,1) = zcoefs 112 ! 113 ! ! west coefficient 114 IF( lp_obc_west .AND. ( ji == niw0p1 ) ) THEN 115 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)*(1.-uwmsk(jj,1)) 116 ELSE 117 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 118 END IF 119 gcp(ji,jj,2) = zcoefw 120 ! 121 ! ! east coefficient 122 IF( lp_obc_east .AND. ( ji == nie0 ) ) THEN 123 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)*(1.-uemsk(jj,1)) 124 ELSE 125 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 126 END IF 127 gcp(ji,jj,3) = zcoefe 128 ! 129 ! ! north coefficient 130 IF( lp_obc_north .AND. ( jj == njn0 ) ) THEN 131 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj)*(1.-vnmsk(ji,1)) 132 ELSE 133 133 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj) 134 END IF 135 gcp(ji,jj,4) = zcoefn 136 ! 137 ! ! diagonal coefficient 138 gcdmat(ji,jj) = e1t(ji,jj)*e2t(ji,jj)*bmask(ji,jj) & 139 & - zcoefs -zcoefw -zcoefe -zcoefn 140 END DO 141 END DO 142 ENDIF 134 END IF 135 gcp(ji,jj,4) = zcoefn 136 ! 137 ! ! diagonal coefficient 138 gcdmat(ji,jj) = e1t(ji,jj)*e2t(ji,jj)*bmask(ji,jj) & 139 & - zcoefs -zcoefw -zcoefe -zcoefn 140 END DO 141 END DO 142 ELSE 143 DO jj = 2, jpjm1 ! matrix of free surface elliptic system 144 DO ji = 2, jpim1 145 zcoef = z2dt * z2dt * grav * bmask(ji,jj) 146 zcoefs = -zcoef * hv(ji ,jj-1) * e1v(ji ,jj-1) / e2v(ji ,jj-1) ! south coefficient 147 zcoefw = -zcoef * hu(ji-1,jj ) * e2u(ji-1,jj ) / e1u(ji-1,jj ) ! west coefficient 148 zcoefe = -zcoef * hu(ji ,jj ) * e2u(ji ,jj ) / e1u(ji ,jj ) ! east coefficient 149 zcoefn = -zcoef * hv(ji ,jj ) * e1v(ji ,jj ) / e2v(ji ,jj ) ! north coefficient 150 gcp(ji,jj,1) = zcoefs 151 gcp(ji,jj,2) = zcoefw 152 gcp(ji,jj,3) = zcoefe 153 gcp(ji,jj,4) = zcoefn 154 gcdmat(ji,jj) = e1t(ji,jj) * e2t(ji,jj) * bmask(ji,jj) & ! diagonal coefficient 155 & - zcoefs -zcoefw -zcoefe -zcoefn 156 END DO 157 END DO 158 ENDIF 159 # endif 143 160 #endif 144 161 145 #if defined key_agrif 146 IF( .NOT.AGRIF_ROOT() ) THEN 162 IF( .NOT. Agrif_Root() ) THEN 147 163 ! 148 164 IF( nbondi == -1 .OR. nbondi == 2 ) bmask(2 ,: ) = 0.e0 … … 193 209 ! 194 210 ENDIF 195 #endif196 211 197 212 ! 2. Boundary conditions -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/TRA/traqsr.F90
r2148 r2224 47 47 48 48 ! Module variables 49 !$AGRIF_DO_NOT_TREAT 49 50 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_chl ! structure of input Chl (file informations, fields read) 50 51 INTEGER, PUBLIC :: nksr ! levels below which the light cannot penetrate ( depth larger than 391 m) 51 52 REAL(wp), DIMENSION(3,61) :: rkrgb !: tabulated attenuation coefficients for RGB absorption 53 !$AGRIF_END_DO_NOT_TREAT 52 54 53 55 !! * Substitutions -
branches/DEV_r2106_LOCEAN2010/NEMO/OPA_SRC/opa.F90
r2200 r2224 177 177 IF( Agrif_Root() ) THEN 178 178 # if defined key_oasis3 || defined key_oasis4 179 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis179 CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis 180 180 # endif 181 CALL init_ioclient( ilocal_comm ) ! exchange io_server nemo local communicator with the io_server181 CALL init_ioclient( ilocal_comm ) ! exchange io_server nemo local communicator with the io_server 182 182 ENDIF 183 183 narea = mynode( cltxt, ilocal_comm ) ! Nodes selection -
branches/DEV_r2106_LOCEAN2010/NEMO/TOP_SRC/PISCES/par_pisces.F90
r2052 r2224 16 16 17 17 IMPLICIT NONE 18 PUBLIC19 18 20 19 INTEGER, PUBLIC, PARAMETER :: jp_lp = jp_lobster !: cumulative number of already defined TRC
Note: See TracChangeset
for help on using the changeset viewer.