*IF DEF,SCMA S_INTSOL.2 C *****************************COPYRIGHT****************************** S_INTSOL.3 C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved. S_INTSOL.4 C S_INTSOL.5 C Use, duplication or disclosure of this code is subject to the S_INTSOL.6 C restrictions as set forth in the contract. S_INTSOL.7 C S_INTSOL.8 C Meteorological Office S_INTSOL.9 C London Road S_INTSOL.10 C BRACKNELL S_INTSOL.11 C Berkshire UK S_INTSOL.12 C RG12 2SZ S_INTSOL.13 C S_INTSOL.14 C If no contract has been raised with this copy of the code, the use, S_INTSOL.15 C duplication or disclosure of it is strictly prohibited. Permission S_INTSOL.16 C to do so must first be obtained in writing from the Head of Numerical S_INTSOL.17 C Modelling at the above address. S_INTSOL.18 C ******************************COPYRIGHT****************************** S_INTSOL.19 C S_INTSOL.20 CLL Subroutine INITSOIL--------------------------------------------- S_INTSOL.21 CLL S_INTSOL.22 CLL Version 1 written by: J.LEAN, 20/9/90. S_INTSOL.23 CLL S_INTSOL.24 CLL S_INTSOL.25 CLL ************************************************************** S_INTSOL.26 CLL * * S_INTSOL.27 CLL * Single Column Unified Model version * S_INTSOL.28 CLL * * S_INTSOL.29 CLL ************************************************************** S_INTSOL.30 CLL S_INTSOL.31 CLL S_INTSOL.32 CLL Purpose: To initialise soil array for SCM use S_INTSOL.33 CLL S_INTSOL.34 CLL Documentation: ?? S_INTSOL.35 CLL S_INTSOL.36 CLL Modifications-: S_INTSOL.37 CLL S_INTSOL.38 CLL Version Date Change S_INTSOL.39 CLL 4.5 11/06/98 (1)SCM integrated as a standard configuration S_INTSOL.40 CLL of the UM. S_INTSOL.41 CLL (2)New arguments added, comdecks removed. S_INTSOL.42 CLL JC Thil. S_INTSOL.43 CLL S_INTSOL.44 CLL ------------------------------------------------------------------ S_INTSOL.45 C S_INTSOL.46Subroutine INITSOIL(points, land_mask, omega1, layer_depth, 2S_INTSOL.47 & nsoil_levs, tconst, andayy, dtday, dtyear, time_init, S_INTSOL.48 & dayno_init, tsoil_init) S_INTSOL.49 Implicit none S_INTSOL.50 *CALL C_OMEGA
S_INTSOL.51 *CALL C_PI
S_INTSOL.52 C S_INTSOL.53 C--------------------------------------------------------------------- S_INTSOL.54 C Arguments S_INTSOL.55 C--------------------------------------------------------------------- S_INTSOL.56 C S_INTSOL.57 Integer S_INTSOL.58 & dayno_init ! IN No. of day from winter solstice S_INTSOL.59 & ,nsoil_levs ! IN No. soil temperatures required S_INTSOL.60 & ,points ! IN No of model columns S_INTSOL.61 Logical S_INTSOL.62 & land_mask(points) ! IN Land mask S_INTSOL.63 Real S_INTSOL.64 & dtday(points) ! IN Amplitude of diurnal soil temp. S_INTSOL.65 ! cycles S_INTSOL.66 & ,dtyear(points) ! IN Amplitude of annual soil temp. S_INTSOL.67 & ,andayy ! IN No. of days in 1 year S_INTSOL.68 & ,layer_depth(nsoil_levs) ! IN Soil layer depth as S_INTSOL.69 ! a multiple of layer 1 depth(m) S_INTSOL.70 & ,omega1(points) ! IN wave factor (s-1) S_INTSOL.71 & ,tconst(points) ! IN Annual mean surface temp. (K) S_INTSOL.72 & ,time_init ! IN Initial time in seconds S_INTSOL.73 & ,tsoil_init(points,nsoil_levs) S_INTSOL.74 ! OUT Initial soil temps. including S_INTSOL.75 ! surface (K) S_INTSOL.76 C S_INTSOL.77 C--------------------------------------------------------------------- S_INTSOL.78 C Local variables S_INTSOL.79 C--------------------------------------------------------------------- S_INTSOL.80 C S_INTSOL.81 Integer S_INTSOL.82 & daymax ! Day of maximum cycle S_INTSOL.83 & ,i, k ! Counter S_INTSOL.84 Real S_INTSOL.85 & timemax ! Time of maximum cycle (hour) S_INTSOL.86 & ,zsoil_k S_INTSOL.87 & ,zasoil(points,nsoil_levs),zdsoil(points,nsoil_levs) S_INTSOL.88 & ,zsum ! S_INTSOL.89 & ,ra(points),rd(points) S_INTSOL.90 & ,omegaa S_INTSOL.91 & ,omegad ! Angular velocity of earth S_INTSOL.92 C S_INTSOL.93 Parameter(timemax=15.,daymax=228) S_INTSOL.94 Do i = 1, points S_INTSOL.95 zsum = 0.0 S_INTSOL.96 omegad = omega S_INTSOL.97 omegaa = omega / andayy S_INTSOL.98 ra(i) = sqrt(omegaa / omega1(i)) S_INTSOL.99 rd(i) = sqrt(omegad / omega1(i)) S_INTSOL.100 Do k = 1, nsoil_levs S_INTSOL.101 zsoil_k = zsum + .5 * layer_depth(k) S_INTSOL.102 zsum = zsum + layer_depth(k) S_INTSOL.103 zdsoil(i,k) = rd(i) * zsoil_k S_INTSOL.104 zasoil(i,k) = ra(i) * zsoil_k S_INTSOL.105 enddo ! k S_INTSOL.106 enddo ! i S_INTSOL.107 Do i = 1, points S_INTSOL.108 If (land_mask(i)) then S_INTSOL.109 Do k = 1, nsoil_levs S_INTSOL.110 tsoil_init(i,k) = tconst(i) + dtday(i) * exp(-zdsoil(i,k)) S_INTSOL.111 & * cos(pi * (time_init / 3600. - timemax) S_INTSOL.112 & / 12.-zdsoil(i,k)) S_INTSOL.113 & + dtyear(i) * exp(-zasoil(i,k)) S_INTSOL.114 & * cos(pi * float(dayno_init-daymax) S_INTSOL.115 & / 180.0 - zasoil(i,k)) S_INTSOL.116 enddo ! k S_INTSOL.117 endif ! land_mask(i) S_INTSOL.118 enddo ! i S_INTSOL.119 Return S_INTSOL.120 End S_INTSOL.121 C S_INTSOL.122 *ENDIF S_INTSOL.123