Changeset 3294 for trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90
- Timestamp:
- 2012-01-28T17:44:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90
r2777 r3294 27 27 USE limvar ! LIM variables 28 28 USE in_out_manager ! I/O manager 29 USE wrk_nemo ! workspace manager30 29 USE lib_mpp ! MPP library 30 USE wrk_nemo ! work arrays 31 31 32 32 IMPLICIT NONE 33 33 PRIVATE 34 34 35 PUBLIC lim_thd_ent ! called by lim_thd35 PUBLIC lim_thd_ent ! called by lim_thd 36 36 37 37 REAL(wp) :: epsi20 = 1e-20_wp ! constant values … … 48 48 !!---------------------------------------------------------------------- 49 49 CONTAINS 50 50 51 51 SUBROUTINE lim_thd_ent( kideb, kiut, jl ) 52 52 !!------------------------------------------------------------------- … … 97 97 zdiscrim !: dummy factor 98 98 99 INTEGER, DIMENSION(jpij) :: & 100 snswi , & ! snow switch 101 nbot0 , & ! old layer bottom index 102 icsuind , & ! ice surface index 103 icsuswi , & ! ice surface switch 104 icboind , & ! ice bottom index 105 icboswi , & ! ice bottom switch 106 snicind , & ! snow ice index 107 snicswi , & ! snow ice switch 108 snind ! snow index 109 ! 110 REAL(wp), DIMENSION(jpij,0:jkmax+3) :: zm0 ! old layer-system vertical cotes 111 REAL(wp), DIMENSION(jpij,0:jkmax+3) :: qm0 ! old layer-system heat content 112 REAL(wp), DIMENSION(jpij,0:jkmax+3) :: z_s ! new snow system vertical cotes 113 REAL(wp), DIMENSION(jpij,0:jkmax+3) :: z_i ! new ice system vertical cotes 114 REAL(wp), DIMENSION(jpij,0:jkmax+3) :: zthick0 ! old ice thickness 115 REAL(wp), DIMENSION(jpij,0:jkmax+3) :: zhl0 ! old and new layer thicknesses 116 ! 117 REAL(wp), DIMENSION(0:jkmax+3,0:jkmax+3) :: zrl01 118 ! 119 REAL(wp), POINTER, DIMENSION(:) :: zh_i, zqsnow , zqti_in, zqti_fin 120 REAL(wp), POINTER, DIMENSION(:) :: zh_s, zdeltah, zqts_in, zqts_fin 99 INTEGER, POINTER, DIMENSION(:) :: snswi ! snow switch 100 INTEGER, POINTER, DIMENSION(:) :: nbot0 ! old layer bottom index 101 INTEGER, POINTER, DIMENSION(:) :: icsuind ! ice surface index 102 INTEGER, POINTER, DIMENSION(:) :: icsuswi ! ice surface switch 103 INTEGER, POINTER, DIMENSION(:) :: icboind ! ice bottom index 104 INTEGER, POINTER, DIMENSION(:) :: icboswi ! ice bottom switch 105 INTEGER, POINTER, DIMENSION(:) :: snicind ! snow ice index 106 INTEGER, POINTER, DIMENSION(:) :: snicswi ! snow ice switch 107 INTEGER, POINTER, DIMENSION(:) :: snind ! snow index 108 ! 109 REAL(wp), POINTER, DIMENSION(:) :: zh_i ! thickness of an ice layer 110 REAL(wp), POINTER, DIMENSION(:) :: zh_s ! thickness of a snow layer 111 REAL(wp), POINTER, DIMENSION(:) :: zqsnow ! enthalpy of the snow put in snow ice 112 REAL(wp), POINTER, DIMENSION(:) :: zdeltah ! temporary variable 113 REAL(wp), POINTER, DIMENSION(:) :: zqti_in, zqts_in 114 REAL(wp), POINTER, DIMENSION(:) :: zqti_fin, zqts_fin 115 116 REAL(wp), POINTER, DIMENSION(:,:) :: zm0 ! old layer-system vertical cotes 117 REAL(wp), POINTER, DIMENSION(:,:) :: qm0 ! old layer-system heat content 118 REAL(wp), POINTER, DIMENSION(:,:) :: z_s ! new snow system vertical cotes 119 REAL(wp), POINTER, DIMENSION(:,:) :: z_i ! new ice system vertical cotes 120 REAL(wp), POINTER, DIMENSION(:,:) :: zthick0 ! old ice thickness 121 REAL(wp), POINTER, DIMENSION(:,:) :: zhl0 ! old and new layer thicknesses 122 REAL(wp), POINTER, DIMENSION(:,:) :: zrl01 121 123 !!------------------------------------------------------------------- 122 124 123 IF( wrk_in_use(1, 1,2,3,4,5,6,7,8) ) THEN 124 CALL ctl_stop('lim_thd_ent : requestead workspace arrays unavailable') ; RETURN 125 END IF 126 127 ! Set-up pointers to sub-arrays of workspace arrays 128 zh_i => wrk_1d_1 (1:jpij) ! thickness of an ice layer 129 zh_s => wrk_1d_2 (1:jpij) ! thickness of a snow layer 130 zqsnow => wrk_1d_3 (1:jpij) ! enthalpy of the snow put in snow ice 131 zdeltah => wrk_1d_4 (1:jpij) ! temporary variable 132 zqti_in => wrk_1d_5 (1:jpij) ! Energy conservation 133 zqts_in => wrk_1d_6 (1:jpij) ! - - 134 zqti_fin => wrk_1d_7 (1:jpij) ! - - 135 zqts_fin => wrk_1d_8 (1:jpij) ! - - 125 CALL wrk_alloc( jpij, snswi, nbot0, icsuind, icsuswi, icboind, icboswi, snicind, snicswi, snind ) ! integer 126 CALL wrk_alloc( jpij, zh_i, zh_s, zqsnow, zdeltah, zqti_in, zqts_in, zqti_fin, zqts_fin ) ! real 127 CALL wrk_alloc( jpij,jkmax+4, zm0, qm0, z_s, z_i, zthick0, zhl0, kjstart = 0 ) 128 CALL wrk_alloc( jkmax+4,jkmax+4, zrl01, kistart = 0, kjstart = 0 ) 136 129 137 130 zthick0(:,:) = 0._wp … … 687 680 END DO !jk 688 681 ! 689 IF( wrk_not_released(1, 1,2,3,4,5,6,7,8) ) CALL ctl_stop( 'lim_thd_ent : failed to release workspace arrays' ) 682 CALL wrk_dealloc( jpij, snswi, nbot0, icsuind, icsuswi, icboind, icboswi, snicind, snicswi, snind ) ! integer 683 CALL wrk_dealloc( jpij, zh_i, zh_s, zqsnow, zdeltah, zqti_in, zqts_in, zqti_fin, zqts_fin ) ! real 684 CALL wrk_dealloc( jpij,jkmax+4, zm0, qm0, z_s, z_i, zthick0, zhl0, kjstart = 0 ) 685 CALL wrk_dealloc( jkmax+4,jkmax+4, zrl01, kistart = 0, kjstart = 0 ) 690 686 ! 691 687 END SUBROUTINE lim_thd_ent
Note: See TracChangeset
for help on using the changeset viewer.