| 1 | SUBROUTINE heating(dist,rmu0,fract,falbe,sol_htg,swnet,icld) |
|---|
| 2 | |
|---|
| 3 | |
|---|
| 4 | c======================================================================= |
|---|
| 5 | c |
|---|
| 6 | c Object: Computation of the solar heating rate |
|---|
| 7 | c SOL_HTG(klon,klev) |
|---|
| 8 | c |
|---|
| 9 | c Arguments: |
|---|
| 10 | c ---------- |
|---|
| 11 | c |
|---|
| 12 | c Input: |
|---|
| 13 | c ------ |
|---|
| 14 | c |
|---|
| 15 | c dist-----input-R- distance astronomique terre-soleil |
|---|
| 16 | c rmu0-----input-R- cosinus de l'angle zenithal |
|---|
| 17 | c fract----input-R- duree d'ensoleillement normalisee |
|---|
| 18 | c falbe----input-R- surface albedo |
|---|
| 19 | c icld-----input-I- calcul avec nuages. |
|---|
| 20 | c p(klon,nl) pressure (level) |
|---|
| 21 | c |
|---|
| 22 | c Output: |
|---|
| 23 | c ------- |
|---|
| 24 | c sol_htg-----output-R- echauffement atmospherique (visible) (K/s) |
|---|
| 25 | c swnet-------output-R- flux solaire net (+ vers le bas) (W/m2) |
|---|
| 26 | c |
|---|
| 27 | c======================================================================= |
|---|
| 28 | c----------------------------------------------------------------------- |
|---|
| 29 | c Declarations: |
|---|
| 30 | c ------------- |
|---|
| 31 | |
|---|
| 32 | use dimphy |
|---|
| 33 | IMPLICIT NONE |
|---|
| 34 | #include "dimensions.h" |
|---|
| 35 | |
|---|
| 36 | INTEGER NLEVEL,NLAYER,NSPECV |
|---|
| 37 | PARAMETER(NLAYER=llm,NLEVEL=NLAYER+1) |
|---|
| 38 | PARAMETER (NSPECV=24) |
|---|
| 39 | c |
|---|
| 40 | c ASTUCE POUR EVITER klon... EN ATTENDANT MIEUX |
|---|
| 41 | INTEGER ngrid |
|---|
| 42 | PARAMETER (ngrid=(jjm-1)*iim+2) ! = klon |
|---|
| 43 | c |
|---|
| 44 | |
|---|
| 45 | c Arguments: |
|---|
| 46 | c ---------- |
|---|
| 47 | |
|---|
| 48 | |
|---|
| 49 | real dist, rmu0(klon), fract(klon), falbe(klon) |
|---|
| 50 | integer icld |
|---|
| 51 | |
|---|
| 52 | real sol_htg(klon,klev) |
|---|
| 53 | real swnet(klon,klev+1) |
|---|
| 54 | |
|---|
| 55 | c Local: |
|---|
| 56 | c ------ |
|---|
| 57 | |
|---|
| 58 | INTEGER I,J,IG,K,IPRINT,ilat,nq |
|---|
| 59 | |
|---|
| 60 | c COMMONS for interface with local subroutines: |
|---|
| 61 | c --------------------------------------------- |
|---|
| 62 | |
|---|
| 63 | REAL UBARI,UBARV,UBAR0 |
|---|
| 64 | REAL CH4(NLEVEL),XN2(NLEVEL),H2(NLEVEL),AR(NLEVEL) |
|---|
| 65 | REAL XMU(NLEVEL),GAS1(NLAYER),COLDEN(NLAYER) |
|---|
| 66 | REAL FNETV(ngrid,NLEVEL),FUPV(ngrid,NLEVEL,NSPECV) |
|---|
| 67 | REAL FDV(ngrid,NLEVEL,NSPECV),FMNETV(ngrid,NLEVEL) |
|---|
| 68 | REAL CSUBP,F0PI |
|---|
| 69 | |
|---|
| 70 | COMMON /UBARED/ UBARI,UBARV,UBAR0 |
|---|
| 71 | |
|---|
| 72 | COMMON /GASS/ CH4,XN2 |
|---|
| 73 | & ,H2,AR |
|---|
| 74 | & ,XMU,GAS1 |
|---|
| 75 | & ,COLDEN |
|---|
| 76 | |
|---|
| 77 | COMMON /FLUXvV/ FNETV, |
|---|
| 78 | & FUPV, |
|---|
| 79 | & FDV, |
|---|
| 80 | & FMNETV |
|---|
| 81 | |
|---|
| 82 | COMMON /PLANT/ CSUBP,F0PI |
|---|
| 83 | |
|---|
| 84 | |
|---|
| 85 | c================================================================== |
|---|
| 86 | |
|---|
| 87 | fnetv = 0.0 |
|---|
| 88 | sol_htg= 0.0 |
|---|
| 89 | swnet = 0.0 |
|---|
| 90 | c pour sorties dans gfluxv... |
|---|
| 91 | iprint = 0 |
|---|
| 92 | |
|---|
| 93 | DO ig=1,klon |
|---|
| 94 | IF(fract(ig).LT.1.e-5) THEN |
|---|
| 95 | DO j=1,nlayer |
|---|
| 96 | sol_htg(ig,j)=0. |
|---|
| 97 | ENDDO |
|---|
| 98 | ELSE |
|---|
| 99 | ubar0=rmu0(ig) |
|---|
| 100 | |
|---|
| 101 | CALL sfluxv(iprint,ig,dist,falbe,icld) ! #3 |
|---|
| 102 | |
|---|
| 103 | fnetv(ig,:) = fnetv(ig,:) *fract(ig) ! >0 vers le haut |
|---|
| 104 | c >0 vers le bas + conversion en W/m2: |
|---|
| 105 | swnet(ig,:) = -1.e-3*fnetv(ig,:) |
|---|
| 106 | |
|---|
| 107 | DO j=1,nlayer |
|---|
| 108 | sol_htg(ig,j)= ! K/s |
|---|
| 109 | s (fnetv(ig,j+1)-fnetv(ig,j)) |
|---|
| 110 | s /(colden(j)*csubp) |
|---|
| 111 | ENDDO |
|---|
| 112 | ENDIF |
|---|
| 113 | ENDDO |
|---|
| 114 | |
|---|
| 115 | RETURN |
|---|
| 116 | 191 FORMAT(F8.2,1P10E10.2) |
|---|
| 117 | 192 FORMAT(a8,1P10E10.2) |
|---|
| 118 | END |
|---|