- Timestamp:
- 2014-09-26T13:04:47+02:00 (10 years ago)
- Location:
- branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90
r4694 r4792 105 105 REAL(wp), DIMENSION(jp_bdy) :: rn_time_dmp_out !: Damping time scale in days at radiation outflow points 106 106 107 #if ( defined key_lim2 || defined key_lim3 )108 107 CHARACTER(len=20), DIMENSION(jp_bdy) :: cn_ice_lim ! Choice of boundary condition for sea ice variables 109 108 INTEGER, DIMENSION(jp_bdy) :: nn_ice_lim_dta !: = 0 use the initial state as bdy dta ; 110 109 !: = 1 read it in a NetCDF file 111 #endif 110 REAL(wp), DIMENSION(jp_bdy) :: rn_ice_tem !: choice of the temperature of incoming sea ice 111 REAL(wp), DIMENSION(jp_bdy) :: rn_ice_sal !: choice of the salinity of incoming sea ice 112 REAL(wp), DIMENSION(jp_bdy) :: rn_ice_age !: choice of the age of incoming sea ice 112 113 ! 113 114 -
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r4694 r4792 532 532 READ ( numnam_cfg, nambdy_dta, IOSTAT = ios, ERR = 902 ) 533 533 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_dta in configuration namelist', lwp ) 534 WRITE ( numond, nambdy_dta )534 IF(lwm) WRITE ( numond, nambdy_dta ) 535 535 536 536 cn_dir_array(ib_bdy) = cn_dir … … 676 676 CALL iom_close ( inum ) 677 677 !CALL fld_clopn ( bn_a_i, nyear, nmonth, nday, ldstop=.TRUE. ) 678 !CALL iom_open ( bn_a_i 678 !CALL iom_open ( bn_a_i%clname, inum ) 679 679 !id1 = iom_varid ( bn_a_i%num, bn_a_i%clvar, kdimsz=zdimsz, kndims=zndims, ldstop = .FALSE. ) 680 680 IF ( zndims == 4 ) THEN … … 740 740 jstart = 1 741 741 DO ib_bdy = 1, nb_bdy 742 jend = nb_bdy_fld(ib_bdy)742 jend = jstart - 1 + nb_bdy_fld(ib_bdy) 743 743 CALL fld_fill( bf(jstart:jend), blf_i(jstart:jend), cn_dir_array(ib_bdy), 'bdy_dta', & 744 744 & 'open boundary conditions', 'nambdy_dta' ) … … 912 912 !!============================================================================== 913 913 END MODULE bdydta 914 915 -
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdydyn.F90
r4370 r4792 30 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 31 USE in_out_manager ! 32 USE domvvl 32 USE domvvl ! variable volume 33 33 34 34 IMPLICIT NONE -
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90
r4333 r4792 24 24 USE par_ice_2 25 25 USE ice_2 ! LIM_2 ice variables 26 USE dom_ice_2 ! sea-ice domain 26 27 #elif defined key_lim3 27 28 USE par_ice 28 29 USE ice ! LIM_3 ice variables 30 USE dom_ice ! sea-ice domain 29 31 #endif 30 32 USE par_oce ! ocean parameters 31 33 USE dom_oce ! ocean space and time domain variables 32 USE dom_ice ! sea-ice domain33 34 USE sbc_oce ! Surface boundary condition: ocean fields 34 35 USE bdy_oce ! ocean open boundary conditions … … 99 100 REAL(wp) :: zinda, ztmelts, zdh 100 101 101 REAL(wp), PARAMETER :: zsal = 6.3 ! arbitrary salinity for incoming ice102 REAL(wp), PARAMETER :: ztem = 270.0 ! arbitrary temperature for incoming ice103 REAL(wp), PARAMETER :: zage = 30.0 ! arbitrary age for incoming ice104 102 !!------------------------------------------------------------------------------ 105 103 ! … … 233 231 234 232 ! Ice salinity, age, temperature 235 sm_i(ji,jj,jl) = zinda * zsal+ ( 1.0 - zinda ) * s_i_min236 o_i(ji,jj,jl) = zinda * zage+ ( 1.0 - zinda )237 t_su(ji,jj,jl) = zinda * ztem + ( 1.0 - zinda ) * ztem233 sm_i(ji,jj,jl) = zinda * rn_ice_sal(ib_bdy) + ( 1.0 - zinda ) * s_i_min 234 o_i(ji,jj,jl) = zinda * rn_ice_age(ib_bdy) + ( 1.0 - zinda ) 235 t_su(ji,jj,jl) = zinda * rn_ice_tem(ib_bdy) + ( 1.0 - zinda ) * rn_ice_tem(ib_bdy) 238 236 DO jk = 1, nlay_s 239 t_s(ji,jj,jk,jl) = zinda * ztem+ ( 1.0 - zinda ) * rtt237 t_s(ji,jj,jk,jl) = zinda * rn_ice_tem(ib_bdy) + ( 1.0 - zinda ) * rtt 240 238 END DO 241 239 DO jk = 1, nlay_i 242 t_i(ji,jj,jk,jl) = zinda * ztem+ ( 1.0 - zinda ) * rtt243 s_i(ji,jj,jk,jl) = zinda * zsal+ ( 1.0 - zinda ) * s_i_min240 t_i(ji,jj,jk,jl) = zinda * rn_ice_tem(ib_bdy) + ( 1.0 - zinda ) * rtt 241 s_i(ji,jj,jk,jl) = zinda * rn_ice_sal(ib_bdy) + ( 1.0 - zinda ) * s_i_min 244 242 END DO 245 243 … … 259 257 260 258 END SELECT 259 260 ! if salinity is constant, then overwrite rn_ice_sal 261 IF( num_sal == 1 ) THEN 262 sm_i(ji,jj,jl) = bulk_sal 263 s_i (ji,jj,:,jl) = bulk_sal 264 ENDIF 261 265 262 266 ! contents … … 338 342 DO ib_bdy=1, nb_bdy 339 343 ! 340 SELECT CASE( nn_ice_lim(ib_bdy) )344 SELECT CASE( cn_ice_lim(ib_bdy) ) 341 345 342 346 CASE('none') … … 355 359 ji = idx_bdy(ib_bdy)%nbi(jb,jgrd) 356 360 jj = idx_bdy(ib_bdy)%nbj(jb,jgrd) 357 zflag = idx_bdy(ib_bdy)%flagu(jb )361 zflag = idx_bdy(ib_bdy)%flagu(jb,jgrd) 358 362 359 363 IF ( ABS( zflag ) == 1. ) THEN ! eastern and western boundaries … … 384 388 ji = idx_bdy(ib_bdy)%nbi(jb,jgrd) 385 389 jj = idx_bdy(ib_bdy)%nbj(jb,jgrd) 386 zflag = idx_bdy(ib_bdy)%flagv(jb )390 zflag = idx_bdy(ib_bdy)%flagv(jb,jgrd) 387 391 388 392 IF ( ABS( zflag ) == 1. ) THEN ! northern and southern boundaries -
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r4694 r4792 100 100 & cn_dyn3d, nn_dyn3d_dta, cn_tra, nn_tra_dta, & 101 101 & ln_tra_dmp, ln_dyn3d_dmp, rn_time_dmp, rn_time_dmp_out, & 102 #if ( defined key_lim2 || defined key_lim3 )103 102 & cn_ice_lim, nn_ice_lim_dta, & 104 #endif 103 & rn_ice_tem, rn_ice_sal, rn_ice_age, & 105 104 & ln_vol, nn_volctl, nn_rimwidth, nb_jpk_bdy 106 105 !! … … 132 131 READ ( numnam_cfg, nambdy, IOSTAT = ios, ERR = 902 ) 133 132 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy in configuration namelist', lwp ) 134 WRITE ( numond, nambdy )133 IF(lwm) WRITE ( numond, nambdy ) 135 134 136 135 ! ----------------------------------------- … … 359 358 ENDIF 360 359 IF(lwp) WRITE(numout,*) 360 IF(lwp) WRITE(numout,*) ' tem of bdy sea-ice = ', rn_ice_tem(ib_bdy) 361 IF(lwp) WRITE(numout,*) ' sal of bdy sea-ice = ', rn_ice_sal(ib_bdy) 362 IF(lwp) WRITE(numout,*) ' age of bdy sea-ice = ', rn_ice_age(ib_bdy) 361 363 #endif 362 364 … … 384 386 ELSE 385 387 IF(lwp) WRITE(numout,*) '*** open boundary will be read straight onto the native grid without vertical interpolation ***' 388 ENDIF 386 389 ENDIF 387 390 … … 422 425 READ ( numnam_cfg, nambdy_index, IOSTAT = ios, ERR = 904 ) 423 426 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_index in configuration namelist', lwp ) 424 WRITE ( numond, nambdy_index )427 IF(lwm) WRITE ( numond, nambdy_index ) 425 428 426 429 SELECT CASE ( TRIM(ctypebdy) ) … … 509 512 & nbrdta(jpbdta, jpbgrd, nb_bdy) ) 510 513 511 IF( jpk_bdy>0 ) THEN512 ALLOCATE( dta_global(jpbdtau, 1, jpk_bdy) )513 ALLOCATE( dta_global_z(jpbdtau, 1, jpk_bdy) )514 IF( nb_jpk_bdy>0 ) THEN 515 ALLOCATE( dta_global(jpbdtau, 1, nb_jpk_bdy) ) 516 ALLOCATE( dta_global_z(jpbdtau, 1, nb_jpk_bdy) ) 514 517 ELSE 515 518 ALLOCATE( dta_global(jpbdtau, 1, jpk) ) … … 518 521 519 522 IF ( icount>0 ) THEN 520 IF( jpk_bdy>0 ) THEN521 ALLOCATE( dta_global2(jpbdtas, nrimmax, jpk_bdy) )522 ALLOCATE( dta_global2_z(jpbdtas, nrimmax, jpk_bdy) )523 IF( nb_jpk_bdy>0 ) THEN 524 ALLOCATE( dta_global2(jpbdtas, nrimmax, nb_jpk_bdy) ) 525 ALLOCATE( dta_global2_z(jpbdtas, nrimmax, nb_jpk_bdy) ) 523 526 ELSE 524 527 ALLOCATE( dta_global2(jpbdtas, nrimmax, jpk) ) 525 528 ALLOCATE( dta_global2_z(jpbdtas, nrimmax, jpk) ) 526 529 ENDIF 530 ENDIF 527 531 ! 528 532 ENDIF -
branches/2014/dev_r4621_NOC4_BDY_VERT_INTERP/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90
r4354 r4792 117 117 READ ( numnam_cfg, nambdy_tide, IOSTAT = ios, ERR = 902 ) 118 118 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'nambdy_tide in configuration namelist', lwp ) 119 WRITE ( numond, nambdy_tide )119 IF(lwm) WRITE ( numond, nambdy_tide ) 120 120 ! ! Parameter control and print 121 121 IF(lwp) WRITE(numout,*) ' ' … … 418 418 DO ib_bdy = 1,nb_bdy 419 419 420 ! line below should be simplified (runoff case)421 !! CHANUT: TO BE SORTED OUT422 !! IF (( nn_dyn2d_dta(ib_bdy) .ge. 2 ).AND.(nn_tra(ib_bdy).NE.4)) THEN423 420 IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 424 421 … … 453 450 IF ( PRESENT(kit) ) THEN 454 451 IF ( lk_first_btstp ) THEN ! Save slow varying open boundary data: 455 dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1))456 dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2))457 dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3))452 IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 453 IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 454 IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 458 455 459 456 ELSE ! Initialize arrays from slow varying open boundary data: 460 dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1))461 dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2))462 dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3))457 IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 458 IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 459 IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 463 460 ENDIF 464 461 ENDIF … … 471 468 z_sist = zramp * SIN( z_sarg ) 472 469 ! 473 igrd=1 ! SSH on tracer grid 474 DO ib = 1, ilen0(igrd) 475 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 476 & ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 477 & tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 478 END DO 479 ! 480 igrd=2 ! U grid 481 DO ib = 1, ilen0(igrd) 482 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 483 & ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 484 & tides(ib_bdy)%u(ib,itide,2)*z_sist ) 485 END DO 486 ! 487 igrd=3 ! V grid 488 DO ib = 1, ilen0(igrd) 489 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 490 & ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 491 & tides(ib_bdy)%v(ib,itide,2)*z_sist ) 492 END DO 493 END DO 470 IF ( dta_bdy(ib_bdy)%ll_ssh ) THEN 471 igrd=1 ! SSH on tracer grid 472 DO ib = 1, ilen0(igrd) 473 dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 474 & ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 475 & tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 476 END DO 477 ENDIF 478 ! 479 IF ( dta_bdy(ib_bdy)%ll_u2d ) THEN 480 igrd=2 ! U grid 481 DO ib = 1, ilen0(igrd) 482 dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 483 & ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 484 & tides(ib_bdy)%u(ib,itide,2)*z_sist ) 485 END DO 486 ENDIF 487 ! 488 IF ( dta_bdy(ib_bdy)%ll_v2d ) THEN 489 igrd=3 ! V grid 490 DO ib = 1, ilen0(igrd) 491 dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 492 & ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 493 & tides(ib_bdy)%v(ib,itide,2)*z_sist ) 494 END DO 495 ENDIF 496 END DO 494 497 END IF 495 498 END DO
Note: See TracChangeset
for help on using the changeset viewer.