Changeset 7646 for trunk/NEMOGCM/NEMO/OPA_SRC/DIU/cool_skin.F90
- Timestamp:
- 2017-02-06T10:25:03+01:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DIU/cool_skin.F90
r6493 r7646 10 10 11 11 !!---------------------------------------------------------------------- 12 !! diurnal_sst_coolskin_step : time-step the cool skin corrections 12 !! diurnal_sst_coolskin_init : initialisation of the cool skin 13 !! diurnal_sst_coolskin_step : time-stepping of the cool skin corrections 13 14 !!---------------------------------------------------------------------- 14 15 USE par_kind … … 21 22 22 23 IMPLICIT NONE 23 24 PRIVATE 25 24 26 ! Namelist parameters 25 27 … … 37 39 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: x_csthick ! Cool skin thickness 38 40 39 PRIVATE40 41 PUBLIC diurnal_sst_coolskin_step, diurnal_sst_coolskin_init 41 42 42 43 !! * Substitutions 43 44 # include "vectopt_loop_substitute.h90" 44 45 !!---------------------------------------------------------------------- 46 !! NEMO/OPA 4.0 , NEMO-consortium (2016) 47 !! $Id: $ 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 49 !!---------------------------------------------------------------------- 45 50 CONTAINS 46 51 … … 56 61 !! 57 62 !!---------------------------------------------------------------------- 58 59 IMPLICIT NONE60 61 63 ALLOCATE( x_csdsst(jpi,jpj), x_csthick(jpi,jpj) ) 62 64 x_csdsst = 0. 63 65 x_csthick = 0. 64 66 ! 65 67 END SUBROUTINE diurnal_sst_coolskin_init 66 68 69 67 70 SUBROUTINE diurnal_sst_coolskin_step(psqflux, pstauflux, psrho, rdt) 68 71 !!---------------------------------------------------------------------- … … 75 78 !! ** Reference : 76 79 !!---------------------------------------------------------------------- 77 78 IMPLICIT NONE79 80 80 ! Dummy variables 81 81 REAL(wp), INTENT(IN), DIMENSION(jpi,jpj) :: psqflux ! Heat (non-solar)(Watts) … … 94 94 95 95 INTEGER :: ji,jj 96 97 IF ( .NOT. ln_blk_core ) THEN 98 CALL ctl_stop("cool_skin.f90: diurnal flux processing only implemented"//& 99 & " for core bulk forcing") 100 ENDIF 101 96 !!---------------------------------------------------------------------- 97 ! 98 IF( .NOT. ln_blk ) CALL ctl_stop("cool_skin.f90: diurnal flux processing only implemented for bulk forcing") 99 ! 102 100 DO jj = 1,jpj 103 101 DO ji = 1,jpi 104 102 ! 105 103 ! Calcualte wind speed from wind stress and friction velocity 106 104 IF( tmask(ji,jj,1) == 1. .AND. pstauflux(ji,jj) /= 0 .AND. psrho(ji,jj) /=0 ) THEN … … 111 109 z_wspd(ji,jj) = 0. 112 110 ENDIF 113 114 111 ! 115 112 ! Calculate gamma function which is dependent upon wind speed 116 113 IF( tmask(ji,jj,1) == 1. ) THEN … … 119 116 IF( ( z_wspd(ji,jj) >= 10. ) ) z_gamma(ji,jj) = 6. 120 117 ENDIF 121 122 118 ! 123 119 ! Calculate lamda function 124 120 IF( tmask(ji,jj,1) == 1. .AND. z_fv(ji,jj) /= 0 ) THEN … … 127 123 z_lamda(ji,jj) = 0. 128 124 ENDIF 129 130 131 125 ! 132 126 ! Calculate the cool skin thickness - only when heat flux is out of the ocean 133 127 IF( tmask(ji,jj,1) == 1. .AND. z_fv(ji,jj) /= 0 .AND. psqflux(ji,jj) < 0 ) THEN 134 128 x_csthick(ji,jj) = ( z_lamda(ji,jj) * pp_v ) / z_fv(ji,jj) 135 129 ELSE 136 130 x_csthick(ji,jj) = 0. 137 131 ENDIF 138 139 140 132 ! 141 133 ! Calculate the cool skin correction - only when the heat flux is out of the ocean 142 134 IF( tmask(ji,jj,1) == 1. .AND. x_csthick(ji,jj) /= 0. .AND. psqflux(ji,jj) < 0. ) THEN … … 145 137 x_csdsst(ji,jj) = 0. 146 138 ENDIF 147 148 END DO149 END DO150 139 ! 140 END DO 141 END DO 142 ! 151 143 END SUBROUTINE diurnal_sst_coolskin_step 152 144 153 145 !!====================================================================== 154 146 END MODULE cool_skin
Note: See TracChangeset
for help on using the changeset viewer.