- Timestamp:
- 2011-11-18T10:19:26+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r3116 r3152 47 47 USE iom ! NetCDF library 48 48 USE lib_mpp ! distribued memory computing library 49 USE wrk_nemo_2 ! work arrays 49 50 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 50 51 #if defined key_cpl_carbon_cycle … … 217 218 !! * initialise the OASIS coupler 218 219 !!---------------------------------------------------------------------- 219 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released220 USE wrk_nemo, ONLY: zacs => wrk_2d_3 , zaos => wrk_2d_4 ! clear & overcast sky albedos221 !!222 220 INTEGER, INTENT(in) :: k_ice ! ice management in the sbc (=0/1/2/3) 223 221 !! 224 222 INTEGER :: jn ! dummy loop index 223 REAL(wp), POINTER, DIMENSION(:,:) :: zacs, zaos 225 224 !! 226 225 NAMELIST/namsbc_cpl/ sn_snd_temp, sn_snd_alb , sn_snd_thick, sn_snd_crt , sn_snd_co2, & … … 229 228 !!--------------------------------------------------------------------- 230 229 231 IF( wrk_in_use(2, 3,4) ) THEN 232 CALL ctl_stop('sbc_cpl_init: requested workspace arrays unavailable') ; RETURN 233 ENDIF 230 CALL wrk_alloc( jpi,jpj, zacs, zaos ) 234 231 235 232 ! ================================ ! … … 618 615 & CALL ctl_stop( 'sbc_cpl_init: diurnal cycle reconstruction (ln_dm2dc) needs daily couping for solar radiation' ) 619 616 620 IF( wrk_not_released(2, 3,4) ) CALL ctl_stop('sbc_cpl_init: failed to release workspace arrays')617 CALL wrk_dealloc( jpi,jpj, zacs, zaos ) 621 618 ! 622 619 END SUBROUTINE sbc_cpl_init … … 665 662 !! emp = emps evap. - precip. (- runoffs) (- calving) ('ocean only case) 666 663 !!---------------------------------------------------------------------- 667 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released668 USE wrk_nemo, ONLY: ztx => wrk_2d_1 , zty => wrk_2d_2669 !!670 664 INTEGER, INTENT(in) :: kt ! ocean model time step index 671 665 INTEGER, INTENT(in) :: k_fsbc ! frequency of sbc (-> ice model) computation … … 680 674 REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient 681 675 REAL(wp) :: zzx, zzy ! temporary variables 682 !!---------------------------------------------------------------------- 683 684 IF( wrk_in_use(2, 1,2) ) THEN 685 CALL ctl_stop('sbc_cpl_rcv: requested workspace arrays unavailable') ; RETURN 686 ENDIF 676 REAL(wp), POINTER, DIMENSION(:,:) :: ztx, zty 677 !!---------------------------------------------------------------------- 678 679 CALL wrk_alloc( jpi,jpj, ztx, zty ) 687 680 688 681 IF( kt == nit000 ) CALL sbc_cpl_init( k_ice ) ! initialisation … … 867 860 ENDIF 868 861 ! 869 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('sbc_cpl_rcv: failed to release workspace arrays')862 CALL wrk_dealloc( jpi,jpj, ztx, zty ) 870 863 ! 871 864 END SUBROUTINE sbc_cpl_rcv … … 905 898 !! ** Action : return ptau_i, ptau_j, the stress over the ice at cp_ice_msh point 906 899 !!---------------------------------------------------------------------- 907 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released908 USE wrk_nemo, ONLY: ztx => wrk_2d_1 , zty => wrk_2d_2909 !!910 900 REAL(wp), INTENT(out), DIMENSION(:,:) :: p_taui ! i- & j-components of atmos-ice stress [N/m2] 911 901 REAL(wp), INTENT(out), DIMENSION(:,:) :: p_tauj ! at I-point (B-grid) or U & V-point (C-grid) … … 913 903 INTEGER :: ji, jj ! dummy loop indices 914 904 INTEGER :: itx ! index of taux over ice 915 !!---------------------------------------------------------------------- 916 917 IF( wrk_in_use(2, 1,2) ) THEN 918 CALL ctl_stop('sbc_cpl_ice_tau: requested workspace arrays unavailable') ; RETURN 919 ENDIF 905 REAL(wp), POINTER, DIMENSION(:,:) :: ztx, zty 906 !!---------------------------------------------------------------------- 907 908 CALL wrk_alloc( jpi,jpj, ztx, zty ) 920 909 921 910 IF( srcv(jpr_itx1)%laction ) THEN ; itx = jpr_itx1 … … 1079 1068 ENDIF 1080 1069 ! 1081 IF( wrk_not_released(2, 1,2) ) CALL ctl_stop('sbc_cpl_ice_tau: failed to release workspace arrays')1070 CALL wrk_dealloc( jpi,jpj, ztx, zty ) 1082 1071 ! 1083 1072 END SUBROUTINE sbc_cpl_ice_tau … … 1124 1113 !! sprecip solid precipitation over the ocean 1125 1114 !!---------------------------------------------------------------------- 1126 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released1127 USE wrk_nemo, ONLY: zcptn => wrk_2d_2 ! rcp * tsn(:,:,1,jp_tem)1128 USE wrk_nemo, ONLY: ztmp => wrk_2d_3 ! temporary array1129 USE wrk_nemo, ONLY: zicefr => wrk_2d_4 ! ice fraction1130 !!1131 1115 REAL(wp), INTENT(in ), DIMENSION(:,:) :: p_frld ! lead fraction [0 to 1] 1132 1116 ! optional arguments, used only in 'mixed oce-ice' case … … 1136 1120 ! 1137 1121 INTEGER :: jl ! dummy loop index 1138 !!---------------------------------------------------------------------- 1139 1140 IF( wrk_in_use(2, 2,3,4) ) THEN 1141 CALL ctl_stop('sbc_cpl_ice_flx: requested workspace arrays unavailable') ; RETURN 1142 ENDIF 1122 REAL(wp), POINTER, DIMENSION(:,:) :: zcptn, ztmp, zicefr 1123 !!---------------------------------------------------------------------- 1124 1125 CALL wrk_alloc( jpi,jpj, zcptn, ztmp, zicefr ) 1143 1126 1144 1127 zicefr(:,:) = 1.- p_frld(:,:) … … 1316 1299 END SELECT 1317 1300 1318 IF( wrk_not_released(2, 2,3,4) ) CALL ctl_stop('sbc_cpl_ice_flx: failed to release workspace arrays')1301 CALL wrk_dealloc( jpi,jpj, zcptn, ztmp, zicefr ) 1319 1302 ! 1320 1303 END SUBROUTINE sbc_cpl_ice_flx … … 1330 1313 !! all the needed fields (as defined in sbc_cpl_init) 1331 1314 !!---------------------------------------------------------------------- 1332 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released1333 USE wrk_nemo, ONLY: zfr_l => wrk_2d_1 ! 1. - fr_i(:,:)1334 USE wrk_nemo, ONLY: ztmp1 => wrk_2d_2 , ztmp2 => wrk_2d_31335 USE wrk_nemo, ONLY: ztmp3 => wrk_3d_1 , ztmp4 => wrk_3d_21336 USE wrk_nemo, ONLY: zotx1 => wrk_2d_4 , zoty1 => wrk_2d_5 , zotz1 => wrk_2d_61337 USE wrk_nemo, ONLY: zitx1 => wrk_2d_7 , zity1 => wrk_2d_8 , zitz1 => wrk_2d_91338 !1339 1315 INTEGER, INTENT(in) :: kt 1340 1316 ! 1341 1317 INTEGER :: ji, jj, jl ! dummy loop indices 1342 1318 INTEGER :: isec, info ! local integer 1343 !!---------------------------------------------------------------------- 1344 1345 IF( wrk_in_use(2, 1,2,3,4,5,6,7,8,9) .OR. wrk_in_use(3, 1,2) ) THEN 1346 CALL ctl_stop('sbc_cpl_snd: requested workspace arrays are unavailable') ; RETURN 1347 ENDIF 1319 REAL(wp), POINTER, DIMENSION(:,:) :: ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 1320 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztmp3, ztmp4 1321 !!---------------------------------------------------------------------- 1322 1323 CALL wrk_alloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 1324 CALL wrk_alloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 1348 1325 1349 1326 isec = ( kt - nit000 ) * NINT(rdttra(1)) ! date of exchanges … … 1565 1542 ENDIF 1566 1543 ! 1567 IF( wrk_not_released(2, 1,2,3,4,5,6,7,8,9) .OR. wrk_not_released(3, 1,2) ) CALL ctl_stop('sbc_cpl_snd: failed to release workspace arrays') 1544 CALL wrk_dealloc( jpi,jpj, zfr_l, ztmp1, ztmp2, zotx1, zoty1, zotz1, zitx1, zity1, zitz1 ) 1545 CALL wrk_dealloc( jpi,jpj,jpl, ztmp3, ztmp4 ) 1568 1546 ! 1569 1547 END SUBROUTINE sbc_cpl_snd
Note: See TracChangeset
for help on using the changeset viewer.