- Timestamp:
- 2012-11-26T11:58:31+01:00 (12 years ago)
- Location:
- branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC
- Files:
-
- 8 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90
r3294 r3653 629 629 INTEGER :: ipk ! number of vertical levels of sdjf%fdta ( 2D: ipk=1 ; 3D: ipk=jpk ) 630 630 INTEGER :: iw ! index into wgts array 631 !!--------------------------------------------------------------------- 632 631 INTEGER :: ipdom ! index of the domain 632 !!--------------------------------------------------------------------- 633 ! 633 634 ipk = SIZE( sdjf%fnow, 3 ) 634 635 ! 635 636 IF( PRESENT(map) ) THEN 636 637 IF( sdjf%ln_tint ) THEN ; CALL fld_map( sdjf%num, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1), map ) … … 643 644 ENDIF 644 645 ELSE 646 IF( SIZE(sdjf%fnow, 1) == jpi ) THEN ; ipdom = jpdom_data 647 ELSE ; ipdom = jpdom_unknown 648 ENDIF 645 649 SELECT CASE( ipk ) 646 CASE(1) 647 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) )648 ELSE ; CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fnow(:,:,1 ), sdjf%nrec_a(1) )650 CASE(1) 651 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,1,2), sdjf%nrec_a(1) ) 652 ELSE ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,1 ), sdjf%nrec_a(1) ) 649 653 ENDIF 650 654 CASE DEFAULT 651 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) )652 ELSE ; CALL iom_get( sdjf%num, jpdom_data, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1) )655 IF( sdjf%ln_tint ) THEN ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fdta(:,:,:,2), sdjf%nrec_a(1) ) 656 ELSE ; CALL iom_get( sdjf%num, ipdom, sdjf%clvar, sdjf%fnow(:,:,: ), sdjf%nrec_a(1) ) 653 657 ENDIF 654 658 END SELECT -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcapr.F90
r3294 r3653 20 20 USE iom ! IOM library 21 21 USE lib_mpp ! MPP library 22 USE restart ! ocean restart23 22 24 23 IMPLICIT NONE -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r3294 r3653 29 29 USE fldread ! read input fields 30 30 USE sbc_oce ! Surface boundary condition: ocean fields 31 USE cyclone ! Cyclone 10m wind form trac of cyclone centres 31 32 USE sbcdcy ! surface boundary condition: diurnal cycle 32 33 USE iom ! I/O manager library … … 186 187 187 188 ! ! surface ocean fluxes computed with CLIO bulk formulea 188 IF( MOD( kt - 1, nn_fsbc ) == 0 ) CALL blk_oce_core( sf, sst_m, ssu_m, ssv_m )189 IF( MOD( kt - 1, nn_fsbc ) == 0 ) CALL blk_oce_core( kt, sf, sst_m, ssu_m, ssv_m ) 189 190 190 191 #if defined key_cice … … 204 205 205 206 206 SUBROUTINE blk_oce_core( sf, pst, pu, pv )207 SUBROUTINE blk_oce_core( kt, sf, pst, pu, pv ) 207 208 !!--------------------------------------------------------------------- 208 209 !! *** ROUTINE blk_core *** … … 225 226 !! ** Nota : sf has to be a dummy argument for AGRIF on NEC 226 227 !!--------------------------------------------------------------------- 227 TYPE(fld), INTENT(in), DIMENSION(:) :: sf ! input data 228 REAL(wp) , INTENT(in), DIMENSION(:,:) :: pst ! surface temperature [Celcius] 229 REAL(wp) , INTENT(in), DIMENSION(:,:) :: pu ! surface current at U-point (i-component) [m/s] 230 REAL(wp) , INTENT(in), DIMENSION(:,:) :: pv ! surface current at V-point (j-component) [m/s] 228 INTEGER , INTENT(in ) :: kt ! time step index 229 TYPE(fld), INTENT(inout), DIMENSION(:) :: sf ! input data 230 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pst ! surface temperature [Celcius] 231 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pu ! surface current at U-point (i-component) [m/s] 232 REAL(wp) , INTENT(in) , DIMENSION(:,:) :: pv ! surface current at V-point (j-component) [m/s] 231 233 ! 232 234 INTEGER :: ji, jj ! dummy loop indices … … 261 263 zwnd_i(:,:) = 0.e0 262 264 zwnd_j(:,:) = 0.e0 265 #if defined key_cyclone 266 # if defined key_vectopt_loop 267 !CDIR COLLAPSE 268 # endif 269 CALL wnd_cyc( kt, zwnd_i, zwnd_j ) ! add Manu ! 270 DO jj = 2, jpjm1 271 DO ji = fs_2, fs_jpim1 ! vect. opt. 272 sf(jp_wndi)%fnow(ji,jj,1) = sf(jp_wndi)%fnow(ji,jj,1) + zwnd_i(ji,jj) 273 sf(jp_wndj)%fnow(ji,jj,1) = sf(jp_wndj)%fnow(ji,jj,1) + zwnd_j(ji,jj) 274 END DO 275 END DO 276 #endif 263 277 #if defined key_vectopt_loop 264 278 !CDIR COLLAPSE -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r3413 r3653 41 41 #endif 42 42 USE geo2ocean ! 43 USE restart !44 43 USE oce , ONLY : tsn, un, vn 45 44 USE albedo ! … … 381 380 & srcv( (/jpr_otz1, jpr_otz2, jpr_itz1, jpr_itz2/) )%laction = .FALSE. 382 381 ! 382 IF( TRIM( sn_rcv_tau%clvor ) == 'local grid' ) THEN ! already on local grid -> no need of the second grid 383 srcv(jpr_otx2:jpr_otz2)%laction = .FALSE. 384 srcv(jpr_itx2:jpr_itz2)%laction = .FALSE. 385 srcv(jpr_oty1)%clgrid = srcv(jpr_oty2)%clgrid ! not needed but cleaner... 386 srcv(jpr_ity1)%clgrid = srcv(jpr_ity2)%clgrid ! not needed but cleaner... 387 ENDIF 388 ! 383 389 IF( TRIM( sn_rcv_tau%cldes ) /= 'oce and ice' ) THEN ! 'oce and ice' case ocean stress on ocean mesh used 384 390 srcv(jpr_itx1:jpr_itz2)%laction = .FALSE. ! ice components not received … … 520 526 ssnd(jps_tmix)%clname = 'O_TepMix' 521 527 SELECT CASE( TRIM( sn_snd_temp%cldes ) ) 528 CASE( 'none' ) ! nothing to do 522 529 CASE( 'oce only' ) ; ssnd( jps_toce )%laction = .TRUE. 523 530 CASE( 'weighted oce and ice' ) … … 562 569 563 570 SELECT CASE ( TRIM( sn_snd_thick%cldes ) ) 564 CASE ( 'ice and snow' ) 571 CASE( 'none' ) ! nothing to do 572 CASE( 'ice and snow' ) 565 573 ssnd(jps_hice:jps_hsnw)%laction = .TRUE. 566 574 IF ( TRIM( sn_snd_thick%clcat ) == 'yes' ) THEN … … 568 576 ELSE 569 577 IF ( jpl > 1 ) THEN 570 578 CALL ctl_stop( 'sbc_cpl_init: use weighted ice and snow option for sn_snd_thick%cldes if not exchanging category fields' ) 571 579 ENDIF 572 580 ENDIF … … 1350 1358 ! ! Surface temperature ! in Kelvin 1351 1359 ! ! ------------------------- ! 1352 SELECT CASE( sn_snd_temp%cldes) 1353 CASE( 'oce only' ) ; ztmp1(:,:) = tsn(:,:,1,jp_tem) + rt0 1354 CASE( 'weighted oce and ice' ) ; ztmp1(:,:) = ( tsn(:,:,1,jp_tem) + rt0 ) * zfr_l(:,:) 1355 SELECT CASE( sn_snd_temp%clcat ) 1356 CASE( 'yes' ) 1357 ztmp3(:,:,1:jpl) = tn_ice(:,:,1:jpl) * a_i(:,:,1:jpl) 1358 CASE( 'no' ) 1359 ztmp3(:,:,:) = 0.0 1360 IF( ssnd(jps_toce)%laction .OR. ssnd(jps_tice)%laction .OR. ssnd(jps_tmix)%laction ) THEN 1361 SELECT CASE( sn_snd_temp%cldes) 1362 CASE( 'oce only' ) ; ztmp1(:,:) = tsn(:,:,1,jp_tem) + rt0 1363 CASE( 'weighted oce and ice' ) ; ztmp1(:,:) = ( tsn(:,:,1,jp_tem) + rt0 ) * zfr_l(:,:) 1364 SELECT CASE( sn_snd_temp%clcat ) 1365 CASE( 'yes' ) 1366 ztmp3(:,:,1:jpl) = tn_ice(:,:,1:jpl) * a_i(:,:,1:jpl) 1367 CASE( 'no' ) 1368 ztmp3(:,:,:) = 0.0 1369 DO jl=1,jpl 1370 ztmp3(:,:,1) = ztmp3(:,:,1) + tn_ice(:,:,jl) * a_i(:,:,jl) 1371 ENDDO 1372 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_temp%clcat' ) 1373 END SELECT 1374 CASE( 'mixed oce-ice' ) 1375 ztmp1(:,:) = ( tsn(:,:,1,1) + rt0 ) * zfr_l(:,:) 1360 1376 DO jl=1,jpl 1361 ztmp 3(:,:,1) = ztmp3(:,:,1) + tn_ice(:,:,jl) * a_i(:,:,jl)1377 ztmp1(:,:) = ztmp1(:,:) + tn_ice(:,:,jl) * a_i(:,:,jl) 1362 1378 ENDDO 1363 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_temp%clcat' )1379 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_temp%cldes' ) 1364 1380 END SELECT 1365 CASE( 'mixed oce-ice' ) 1366 ztmp1(:,:) = ( tsn(:,:,1,1) + rt0 ) * zfr_l(:,:) 1367 DO jl=1,jpl 1368 ztmp1(:,:) = ztmp1(:,:) + tn_ice(:,:,jl) * a_i(:,:,jl) 1369 ENDDO 1370 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_temp%cldes' ) 1371 END SELECT 1372 IF( ssnd(jps_toce)%laction ) CALL cpl_prism_snd( jps_toce, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 1373 IF( ssnd(jps_tice)%laction ) CALL cpl_prism_snd( jps_tice, isec, ztmp3, info ) 1374 IF( ssnd(jps_tmix)%laction ) CALL cpl_prism_snd( jps_tmix, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 1381 IF( ssnd(jps_toce)%laction ) CALL cpl_prism_snd( jps_toce, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 1382 IF( ssnd(jps_tice)%laction ) CALL cpl_prism_snd( jps_tice, isec, ztmp3, info ) 1383 IF( ssnd(jps_tmix)%laction ) CALL cpl_prism_snd( jps_tmix, isec, RESHAPE ( ztmp1, (/jpi,jpj,1/) ), info ) 1384 ENDIF 1375 1385 ! 1376 1386 ! ! ------------------------- ! … … 1392 1402 ! ! ------------------------- ! 1393 1403 ! Send ice fraction field 1394 SELECT CASE( sn_snd_thick%clcat )1395 CASE( 'yes' )1396 ztmp3(:,:,1:jpl) = a_i(:,:,1:jpl)1397 CASE( 'no' )1398 ztmp3(:,:,1) = fr_i(:,:)1399 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%clcat' )1400 END SELECT1401 IF( ssnd(jps_fice)%laction ) CALL cpl_prism_snd( jps_fice, isec, ztmp3, info )1404 IF( ssnd(jps_fice)%laction ) THEN 1405 SELECT CASE( sn_snd_thick%clcat ) 1406 CASE( 'yes' ) ; ztmp3(:,:,1:jpl) = a_i(:,:,1:jpl) 1407 CASE( 'no' ) ; ztmp3(:,:,1 ) = fr_i(:,: ) 1408 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%clcat' ) 1409 END SELECT 1410 CALL cpl_prism_snd( jps_fice, isec, ztmp3, info ) 1411 ENDIF 1402 1412 1403 1413 ! Send ice and snow thickness field 1404 SELECT CASE( sn_snd_thick%cldes) 1405 CASE( 'weighted ice and snow' ) 1406 SELECT CASE( sn_snd_thick%clcat ) 1407 CASE( 'yes' ) 1408 ztmp3(:,:,1:jpl) = ht_i(:,:,1:jpl) * a_i(:,:,1:jpl) 1409 ztmp4(:,:,1:jpl) = ht_s(:,:,1:jpl) * a_i(:,:,1:jpl) 1410 CASE( 'no' ) 1411 ztmp3(:,:,:) = 0.0 ; ztmp4(:,:,:) = 0.0 1412 DO jl=1,jpl 1413 ztmp3(:,:,1) = ztmp3(:,:,1) + ht_i(:,:,jl) * a_i(:,:,jl) 1414 ztmp4(:,:,1) = ztmp4(:,:,1) + ht_s(:,:,jl) * a_i(:,:,jl) 1415 ENDDO 1416 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%clcat' ) 1414 IF( ssnd(jps_hice)%laction .OR. ssnd(jps_hsnw)%laction ) THEN 1415 SELECT CASE( sn_snd_thick%cldes) 1416 CASE( 'none' ) ! nothing to do 1417 CASE( 'weighted ice and snow' ) 1418 SELECT CASE( sn_snd_thick%clcat ) 1419 CASE( 'yes' ) 1420 ztmp3(:,:,1:jpl) = ht_i(:,:,1:jpl) * a_i(:,:,1:jpl) 1421 ztmp4(:,:,1:jpl) = ht_s(:,:,1:jpl) * a_i(:,:,1:jpl) 1422 CASE( 'no' ) 1423 ztmp3(:,:,:) = 0.0 ; ztmp4(:,:,:) = 0.0 1424 DO jl=1,jpl 1425 ztmp3(:,:,1) = ztmp3(:,:,1) + ht_i(:,:,jl) * a_i(:,:,jl) 1426 ztmp4(:,:,1) = ztmp4(:,:,1) + ht_s(:,:,jl) * a_i(:,:,jl) 1427 ENDDO 1428 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%clcat' ) 1429 END SELECT 1430 CASE( 'ice and snow' ) 1431 ztmp3(:,:,1:jpl) = ht_i(:,:,1:jpl) 1432 ztmp4(:,:,1:jpl) = ht_s(:,:,1:jpl) 1433 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%cldes' ) 1417 1434 END SELECT 1418 CASE( 'ice and snow' ) 1419 ztmp3(:,:,1:jpl) = ht_i(:,:,1:jpl) 1420 ztmp4(:,:,1:jpl) = ht_s(:,:,1:jpl) 1421 CASE default ; CALL ctl_stop( 'sbc_cpl_snd: wrong definition of sn_snd_thick%cldes' ) 1422 END SELECT 1423 IF( ssnd(jps_hice)%laction ) CALL cpl_prism_snd( jps_hice, isec, ztmp3, info ) 1424 IF( ssnd(jps_hsnw)%laction ) CALL cpl_prism_snd( jps_hsnw, isec, ztmp4, info ) 1435 IF( ssnd(jps_hice)%laction ) CALL cpl_prism_snd( jps_hice, isec, ztmp3, info ) 1436 IF( ssnd(jps_hsnw)%laction ) CALL cpl_prism_snd( jps_hsnw, isec, ztmp4, info ) 1437 ENDIF 1425 1438 ! 1426 1439 #if defined key_cpl_carbon_cycle -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90
r3294 r3653 48 48 USE in_out_manager ! I/O manager 49 49 USE prtctl ! Print control 50 51 # if defined key_agrif 52 USE agrif_ice 53 USE agrif_lim2_update 54 # endif 50 55 51 56 IMPLICIT NONE … … 101 106 ! 102 107 CALL ice_init_2 108 ! 109 # if defined key_agrif 110 IF( .NOT. Agrif_Root() ) CALL Agrif_InitValues_cont_lim2 ! AGRIF: set the meshes 111 # endif 103 112 ENDIF 104 113 … … 106 115 IF( MOD( kt-1, nn_fsbc ) == 0 ) THEN ! Ice time-step only ! 107 116 ! !----------------------! 117 # if defined key_agrif 118 IF( .NOT. Agrif_Root() ) lim_nbstep = MOD(lim_nbstep,Agrif_rhot()& 119 &*Agrif_PArent(nn_fsbc)/REAL(nn_fsbc)) + 1 120 # endif 108 121 ! Bulk Formulea ! 109 122 !----------------! … … 211 224 IF( lrst_ice ) CALL lim_rst_write_2( kt ) ! Ice restart file 212 225 ! 226 # if defined key_agrif && defined key_lim2 227 IF( .NOT. Agrif_Root() ) CALL agrif_update_lim2( kt ) 228 # endif 229 ! 213 230 ENDIF ! End sea-ice time step only 214 231 ! -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r3421 r3653 45 45 46 46 USE prtctl ! Print control (prt_ctl routine) 47 USE restart ! ocean restart48 47 USE iom ! IOM library 49 48 USE in_out_manager ! I/O manager -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcrnf.F90
r3421 r3653 21 21 USE closea ! closed seas 22 22 USE fldread ! read input field at current time step 23 USE restart ! restart24 23 USE in_out_manager ! I/O manager 25 24 USE iom ! I/O module -
branches/2012/dev_LOCEAN_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/SBC/sbcssm.F90
r3294 r3653 18 18 USE sbcapr ! surface boundary condition: atmospheric pressure 19 19 USE prtctl ! Print control (prt_ctl routine) 20 USE restart ! ocean restart21 20 USE iom 22 21 USE in_out_manager ! I/O manager
Note: See TracChangeset
for help on using the changeset viewer.