File indexing completed on 2018-03-02 18:44:29 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
2d104ee1fd Jean*0001 #include "THSICE_OPTIONS.h"
0002 #ifdef ALLOW_BULK_FORCE
147f2f3fa7 Jean*0003 # include "BULK_FORCE_OPTIONS.h"
0004 #endif
0005 #ifdef ALLOW_CHEAPAML
0006 # include "CHEAPAML_OPTIONS.h"
2d104ee1fd Jean*0007 #endif
0008
0009
0010
0011
0012 SUBROUTINE THSICE_GET_PRECIP(
e22ef29cc8 Jean*0013 I iceMsk, locSST,
0014 O precip, snowPrc, qPrcRnO, flxSW,
2d104ee1fd Jean*0015 I iMin,iMax,jMin,jMax, bi,bj, myThid )
0016
0017
0018
7f3e8d8dce Jean*0019
147f2f3fa7 Jean*0020
0021
2d104ee1fd Jean*0022
0023
0024
0025
0026 IMPLICIT NONE
0027
0028
0029 #include "SIZE.h"
0030 #include "EEPARAMS.h"
e22ef29cc8 Jean*0031 #include "PARAMS.h"
2d104ee1fd Jean*0032 #ifdef ALLOW_BULK_FORCE
147f2f3fa7 Jean*0033 # include "BULKF_PARAMS.h"
0034 # include "BULKF.h"
0035 #elif defined(ALLOW_CHEAPAML)
0036 # include "CHEAPAML.h"
2d104ee1fd Jean*0037 #endif
0038
0039
0040
0041
e22ef29cc8 Jean*0042
2d104ee1fd Jean*0043
0044
e22ef29cc8 Jean*0045
7f3e8d8dce Jean*0046
2d104ee1fd Jean*0047
0048
0049
0050
0051 _RL iceMsk (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
e22ef29cc8 Jean*0052 _RL locSST (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
2d104ee1fd Jean*0053 _RL precip (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0054 _RL snowPrc(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
e22ef29cc8 Jean*0055 _RL qPrcRnO(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
2d104ee1fd Jean*0056 _RL flxSW (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0057 INTEGER iMin,iMax
0058 INTEGER jMin,jMax
0059 INTEGER bi,bj
0060 INTEGER myThid
0061
0062
0063 #ifdef ALLOW_THSICE
147f2f3fa7 Jean*0064 #if defined(ALLOW_BULK_FORCE) || defined(ALLOW_CHEAPAML)
2d104ee1fd Jean*0065
0066
0067
0068
0069 INTEGER i,j
0070
147f2f3fa7 Jean*0071 #ifdef ALLOW_BULK_FORCE
0072 IF ( useBulkforce ) THEN
0073
0074 DO j = jMin, jMax
2d104ee1fd Jean*0075 DO i = iMin, iMax
e22ef29cc8 Jean*0076 precip(i,j) = ( rain(i,j,bi,bj)+runoff(i,j,bi,bj) )*rhofw
0077 flxSW (i,j) = solar(i,j,bi,bj)
2d104ee1fd Jean*0078 ENDDO
147f2f3fa7 Jean*0079 ENDDO
2d104ee1fd Jean*0080
147f2f3fa7 Jean*0081
0082
e22ef29cc8 Jean*0083
0084
0085 DO j = jMin, jMax
0086 DO i = iMin, iMax
0087 IF ( iceMsk(i,j,bi,bj).GT.0. _d 0
0088 & .AND. Tair(i,j,bi,bj).LE.Tf0kel ) THEN
0089 snowPrc(i,j) = rain(i,j,bi,bj)*rhofw
0090 ENDIF
0091 ENDDO
0092 ENDDO
147f2f3fa7 Jean*0093
e22ef29cc8 Jean*0094
147f2f3fa7 Jean*0095 IF ( temp_EvPrRn .NE. UNSET_RL ) THEN
e22ef29cc8 Jean*0096
0097
0098
0099
0100
147f2f3fa7 Jean*0101 DO j = jMin, jMax
0102 DO i = iMin, iMax
0103 qPrcRnO(i,j) = HeatCapacity_Cp*(
e22ef29cc8 Jean*0104 & ( Tair(i,j,bi,bj) - Tf0kel - temp_EvPrRn )
0105 & *( rain(i,j,bi,bj)*rhofw - snowPrc(i,j) )
0106 & + ( locSST(i,j,bi,bj) - temp_EvPrRn )
0107 & *runoff(i,j,bi,bj)*rhofw )
147f2f3fa7 Jean*0108 ENDDO
0109 ENDDO
0110 ENDIF
0111
0112
0113 ENDIF
0114
0115 IF ( useCheapAML )
0116 & STOP 'cannot use thsIce and CheapAML with BULK_FORCE compiled'
0117
0118 #elif defined(ALLOW_CHEAPAML)
0119 IF ( useCheapAML ) THEN
0120
0121 DO j = jMin, jMax
0122 DO i = iMin, iMax
0123 precip(i,j) = cheapPrecip(i,j,bi,bj)
0124
e22ef29cc8 Jean*0125 ENDDO
0126 ENDDO
147f2f3fa7 Jean*0127
0128
0129
0130
0131
0132 DO j = jMin, jMax
0133 DO i = iMin, iMax
0134 IF ( iceMsk(i,j,bi,bj).GT.0. _d 0
0135 & .AND. Tair(i,j,bi,bj).LT.zeroRL ) THEN
0136 snowPrc(i,j) = cheapPrecip(i,j,bi,bj)
0137 ENDIF
0138 ENDDO
0139 ENDDO
0140
0141
0142 IF ( temp_EvPrRn .NE. UNSET_RL ) THEN
0143
0144
0145
0146
0147 DO j = jMin, jMax
0148 DO i = iMin, iMax
0149 qPrcRnO(i,j) = HeatCapacity_Cp*
0150 & ( Tair(i,j,bi,bj) - temp_EvPrRn )
0151 & *( cheapPrecip(i,j,bi,bj) - snowPrc(i,j) )
0152
0153
0154
0155 ENDDO
0156 ENDDO
0157 ENDIF
0158
0159
e22ef29cc8 Jean*0160 ENDIF
147f2f3fa7 Jean*0161 #endif /* if ALLOW_BULK_FORCE elif ALLOW_CHEAPAML */
e22ef29cc8 Jean*0162
2d104ee1fd Jean*0163
0164
147f2f3fa7 Jean*0165 #endif /* ALLOW_BULK_FORCE or ALLOW_CHEAPAML */
2d104ee1fd Jean*0166 #endif /* ALLOW_THSICE */
0167
0168 RETURN
0169 END