source: LMDZ6/trunk/libf/phylmdiso/ocean_forced_mod.F90 @ 3940

Last change on this file since 3940 was 3940, checked in by crisi, 3 years ago

replace files by symbloic liks from phylmdiso towards phylmd.
Many files at once

File size: 19.1 KB
Line 
1!
2! $Id: ocean_forced_mod.F90 3327 2018-05-16 13:58:59Z musat $
3!
4MODULE ocean_forced_mod
5!
6! This module is used for both the sub-surfaces ocean and sea-ice for the case of a
7! forced ocean,  "ocean=force".
8!
9  IMPLICIT NONE
10
11CONTAINS
12!
13!****************************************************************************************
14!
15  SUBROUTINE ocean_forced_noice( &
16       itime, dtime, jour, knon, knindex, &
17       p1lay, cdragh, cdragq, cdragm, precip_rain, precip_snow, &
18       temp_air, spechum, &
19       AcoefH, AcoefQ, BcoefH, BcoefQ, &
20       AcoefU, AcoefV, BcoefU, BcoefV, &
21       ps, u1, v1, gustiness, tsurf_in, &
22       radsol, snow, agesno, &
23       qsurf, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
24       tsurf_new, dflux_s, dflux_l, sens_prec_liq, rhoa &
25#ifdef ISO
26            ,xtprecip_rain, xtprecip_snow, xtspechum,Roce,rlat, &
27            xtsnow,xtevap,h1 & 
28#endif           
29            )
30!
31! This subroutine treats the "open ocean", all grid points that are not entierly covered
32! by ice.
33! The routine receives data from climatologie file limit.nc and does some calculations at the
34! surface.
35!
36    USE dimphy
37    USE calcul_fluxs_mod
38    USE limit_read_mod
39    USE mod_grid_phy_lmdz
40    USE indice_sol_mod
41    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
42    use config_ocean_skin_m, only: activate_ocean_skin
43#ifdef ISO
44  USE infotrac_phy, ONLY: ntraciso,niso
45    USE isotopes_routines_mod, ONLY: calcul_iso_surf_oce_vectall, &
46&       calcul_iso_surf_sic_vectall   
47#ifdef ISOVERIF
48    USE isotopes_mod, ONLY: iso_eau,ridicule
49    !USE isotopes_verif_mod, ONLY: errmax,errmaxrel,iso_verif_egalite_choix
50    USE isotopes_verif_mod
51#endif
52#endif
53
54    INCLUDE "YOMCST.h"
55    INCLUDE "clesphys.h"
56    INCLUDE "flux_arp.h"
57
58! Input arguments
59!****************************************************************************************
60    INTEGER, INTENT(IN)                      :: itime, jour, knon
61    INTEGER, DIMENSION(klon), INTENT(IN)     :: knindex
62    REAL, INTENT(IN)                         :: dtime
63    REAL, DIMENSION(klon), INTENT(IN)        :: p1lay
64    REAL, DIMENSION(klon), INTENT(IN)        :: cdragh, cdragq, cdragm
65    REAL, DIMENSION(klon), INTENT(IN)        :: precip_rain, precip_snow
66    REAL, DIMENSION(klon), INTENT(IN)        :: temp_air, spechum
67    REAL, DIMENSION(klon), INTENT(IN)        :: AcoefH, AcoefQ, BcoefH, BcoefQ
68    REAL, DIMENSION(klon), INTENT(IN)        :: AcoefU, AcoefV, BcoefU, BcoefV
69    REAL, DIMENSION(klon), INTENT(IN)        :: ps
70    REAL, DIMENSION(klon), INTENT(IN)        :: u1, v1, gustiness
71    REAL, DIMENSION(klon), INTENT(IN)        :: tsurf_in
72    real, intent(in):: rhoa(:) ! (knon) density of moist air  (kg / m3)
73
74#ifdef ISO
75    REAL, DIMENSION(ntraciso,klon), INTENT(IN)    :: xtprecip_rain, xtprecip_snow
76    REAL, DIMENSION(ntraciso,klon), INTENT(IN)    :: xtspechum
77    real, dimension(klon), intent(IN) :: rlat
78#endif
79
80! In/Output arguments
81!****************************************************************************************
82    REAL, DIMENSION(klon), INTENT(INOUT)     :: radsol
83    REAL, DIMENSION(klon), INTENT(INOUT)     :: snow
84    REAL, DIMENSION(klon), INTENT(INOUT)     :: agesno !? put to 0 in ocean
85#ifdef ISO     
86    REAL, DIMENSION(niso,klon), INTENT(IN)    :: xtsnow
87    REAL, DIMENSION(niso,klon), INTENT(INOUT)    :: Roce
88#endif
89
90! Output arguments
91!****************************************************************************************
92    REAL, DIMENSION(klon), INTENT(OUT)       :: qsurf
93    REAL, DIMENSION(klon), INTENT(OUT)       :: evap, fluxsens, fluxlat
94    REAL, DIMENSION(klon), INTENT(OUT)       :: flux_u1, flux_v1
95    REAL, DIMENSION(klon), INTENT(OUT)       :: tsurf_new
96    REAL, DIMENSION(klon), INTENT(OUT)       :: dflux_s, dflux_l
97    REAL, intent(out):: sens_prec_liq(:) ! (knon)
98
99#ifdef ISO     
100    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)    :: xtevap ! isotopes in evaporation flux
101    REAL, DIMENSION(klon), INTENT(out)    :: h1 ! just a diagnostic, not useful for the simulation
102#endif
103
104! Local variables
105!****************************************************************************************
106    INTEGER                     :: i, j
107    REAL, DIMENSION(klon)       :: cal, beta, dif_grnd
108    REAL, DIMENSION(klon)       :: alb_neig, tsurf_lim, zx_sl
109    REAL, DIMENSION(klon)       :: u0, v0
110    REAL, DIMENSION(klon)       :: u1_lay, v1_lay
111    LOGICAL                     :: check=.FALSE.
112    REAL sens_prec_sol(knon)
113    REAL, DIMENSION(klon) :: lat_prec_liq, lat_prec_sol   
114
115#ifdef ISO   
116      real, parameter :: t_coup = 273.15     
117#endif
118
119!****************************************************************************************
120! Start calculation
121!****************************************************************************************
122    IF (check) WRITE(*,*)' Entering ocean_forced_noice'
123   
124#ifdef ISO
125#ifdef ISOVERIF
126        do i=1,knon
127          if (iso_eau.gt.0) then         
128              call iso_verif_egalite_choix(xtspechum(iso_eau,i), &
129     &                  spechum(i),'ocean_forced_mod 111', &
130     &                  errmax,errmaxrel)     
131              call iso_verif_egalite_choix(snow(i), &
132     &          xtsnow(iso_eau,i),'ocean_forced_mod 117', &
133     &          errmax,errmaxrel)
134           endif !if (iso_eau.gt.0) then
135        enddo !do i=1,knon
136#endif     
137#endif
138
139!****************************************************************************************
140! 1)   
141! Read sea-surface temperature from file limit.nc
142!
143!****************************************************************************************
144!--sb:
145!!jyg    if (knon.eq.1) then ! single-column model
146    if (klon_glo.eq.1) then ! single-column model
147      ! EV: now surface Tin flux_arp.h
148      !CALL read_tsurf1d(knon,tsurf_lim) ! new
149       DO i = 1, knon
150        tsurf_lim(i) = tg
151       ENDDO
152
153    else ! GCM
154      CALL limit_read_sst(knon,knindex,tsurf_lim &
155#ifdef ISO
156     &  ,Roce,rlat   &
157#endif     
158     &   )
159    endif ! knon
160!sb--
161
162!****************************************************************************************
163! 2)
164! Flux calculation
165!
166!****************************************************************************************
167! Set some variables for calcul_fluxs
168    !cal = 0.
169    !beta = 1.
170    !dif_grnd = 0.
171   
172   
173    ! EV: use calbeta to calculate beta
174    ! Need to initialize qsurf for calbeta but it is not modified by this routine
175    qsurf(:)=0.
176    CALL calbeta(dtime, is_oce, knon, snow, qsurf, beta, cal, dif_grnd)
177
178
179    alb_neig(:) = 0.
180    agesno(:) = 0.
181    lat_prec_liq = 0.; lat_prec_sol = 0.
182
183! Suppose zero surface speed
184    u0(:)=0.0
185    v0(:)=0.0
186    u1_lay(:) = u1(:) - u0(:)
187    v1_lay(:) = v1(:) - v0(:)
188
189! Calcul de tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l and qsurf
190    CALL calcul_fluxs(knon, is_oce, dtime, &
191         merge(tsurf_in, tsurf_lim, activate_ocean_skin == 2), p1lay, cal, &
192         beta, cdragh, cdragq, ps, &
193         precip_rain, precip_snow, snow, qsurf,  &
194         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
195         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
196         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
197         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, rhoa)
198    if (activate_ocean_skin == 2) tsurf_new = tsurf_lim
199
200    do j = 1, knon
201      i = knindex(j)
202      sens_prec_liq_o(i,1) = sens_prec_liq(j)
203      sens_prec_sol_o(i,1) = sens_prec_sol(j)
204      lat_prec_liq_o(i,1) = lat_prec_liq(j)
205      lat_prec_sol_o(i,1) = lat_prec_sol(j)
206    enddo
207
208
209! - Flux calculation at first modele level for U and V
210    CALL calcul_flux_wind(knon, dtime, &
211         u0, v0, u1, v1, gustiness, cdragm, &
212         AcoefU, AcoefV, BcoefU, BcoefV, &
213         p1lay, temp_air, &
214         flux_u1, flux_v1) 
215 
216
217#ifdef ISO     
218        call calcul_iso_surf_oce_vectall(klon, knon,t_coup, &
219     &    ps,tsurf_new,spechum,u1_lay, v1_lay, xtspechum, &
220     &    evap, Roce,xtevap,h1 &
221#ifdef ISOTRAC
222     &    ,knindex &
223#endif
224     &   )
225#endif         
226
227#ifdef ISO
228#ifdef ISOVERIF
229!          write(*,*) 'ocean_forced_mod 176: sortie de ocean_forced_noice'
230          if (iso_eau.gt.0) then
231           do i=1,knon               
232              call iso_verif_egalite_choix(snow(i), &
233     &          xtsnow(iso_eau,i),'ocean_forced_mod 180', &
234     &          errmax,errmaxrel)
235           enddo ! do j=1,knon
236          endif !if (iso_eau.gt.0) then
237#endif
238#endif   
239
240  END SUBROUTINE ocean_forced_noice
241!
242!***************************************************************************************
243!
244  SUBROUTINE ocean_forced_ice( &
245       itime, dtime, jour, knon, knindex, &
246       tsurf_in, p1lay, cdragh, cdragm, precip_rain, precip_snow, temp_air, spechum, &
247       AcoefH, AcoefQ, BcoefH, BcoefQ, &
248       AcoefU, AcoefV, BcoefU, BcoefV, &
249       ps, u1, v1, gustiness, &
250       radsol, snow, qsol, agesno, tsoil, &
251       qsurf, alb1_new, alb2_new, evap, fluxsens, fluxlat, flux_u1, flux_v1, &
252       tsurf_new, dflux_s, dflux_l, rhoa &
253#ifdef ISO
254            ,xtprecip_rain, xtprecip_snow, xtspechum,Roce, &
255            xtsnow, xtsol,xtevap,Rland_ice & 
256#endif           
257            )
258!
259! This subroutine treats the ocean where there is ice.
260! The routine reads data from climatologie file and does flux calculations at the
261! surface.
262!
263    USE dimphy
264    USE calcul_fluxs_mod
265    USE surface_data,     ONLY : calice, calsno
266    USE limit_read_mod
267    USE fonte_neige_mod,  ONLY : fonte_neige
268    USE indice_sol_mod
269    USE phys_output_var_mod, ONLY : sens_prec_liq_o, sens_prec_sol_o, lat_prec_liq_o, lat_prec_sol_o
270#ifdef ISO
271  USE infotrac_phy, ONLY: niso,ntraciso
272    USE isotopes_routines_mod, ONLY: calcul_iso_surf_oce_vectall, &
273&       calcul_iso_surf_sic_vectall
274#ifdef ISOVERIF
275    USE isotopes_mod, ONLY: iso_eau,ridicule
276    !USE isotopes_verif_mod, ONLY: errmax,errmaxrel,iso_verif_egalite_choix
277    USE isotopes_verif_mod
278#endif
279#endif
280
281!   INCLUDE "indicesol.h"
282    INCLUDE "dimsoil.h"
283    INCLUDE "YOMCST.h"
284    INCLUDE "clesphys.h"
285    INCLUDE "flux_arp.h"
286
287! Input arguments
288!****************************************************************************************
289    INTEGER, INTENT(IN)                  :: itime, jour, knon
290    INTEGER, DIMENSION(klon), INTENT(IN) :: knindex
291    REAL, INTENT(IN)                     :: dtime
292    REAL, DIMENSION(klon), INTENT(IN)    :: tsurf_in
293    REAL, DIMENSION(klon), INTENT(IN)    :: p1lay
294    REAL, DIMENSION(klon), INTENT(IN)    :: cdragh, cdragm
295    REAL, DIMENSION(klon), INTENT(IN)    :: precip_rain, precip_snow
296    REAL, DIMENSION(klon), INTENT(IN)    :: temp_air, spechum
297    REAL, DIMENSION(klon), INTENT(IN)    :: AcoefH, AcoefQ, BcoefH, BcoefQ
298    REAL, DIMENSION(klon), INTENT(IN)    :: AcoefU, AcoefV, BcoefU, BcoefV
299    REAL, DIMENSION(klon), INTENT(IN)    :: ps
300    REAL, DIMENSION(klon), INTENT(IN)    :: u1, v1, gustiness
301    real, intent(in):: rhoa(:) ! (knon) density of moist air  (kg / m3)
302#ifdef ISO
303    REAL, DIMENSION(ntraciso,klon), INTENT(IN)    :: xtprecip_rain, xtprecip_snow
304    REAL, DIMENSION(ntraciso,klon), INTENT(IN)    :: xtspechum
305    REAL, DIMENSION(niso,klon), INTENT(IN)    :: Roce
306    REAL, DIMENSION(niso,klon), INTENT(IN)        :: Rland_ice
307#endif
308
309! In/Output arguments
310!****************************************************************************************
311    REAL, DIMENSION(klon), INTENT(INOUT)          :: radsol
312    REAL, DIMENSION(klon), INTENT(INOUT)          :: snow, qsol
313    REAL, DIMENSION(klon), INTENT(INOUT)          :: agesno
314    REAL, DIMENSION(klon, nsoilmx), INTENT(INOUT) :: tsoil
315#ifdef ISO     
316    REAL, DIMENSION(niso,klon), INTENT(INOUT)    :: xtsnow
317    REAL, DIMENSION(niso,klon), INTENT(IN)    :: xtsol
318#endif
319
320! Output arguments
321!****************************************************************************************
322    REAL, DIMENSION(klon), INTENT(OUT)            :: qsurf
323    REAL, DIMENSION(klon), INTENT(OUT)            :: alb1_new  ! new albedo in visible SW interval
324    REAL, DIMENSION(klon), INTENT(OUT)            :: alb2_new  ! new albedo in near IR interval
325    REAL, DIMENSION(klon), INTENT(OUT)            :: evap, fluxsens, fluxlat
326    REAL, DIMENSION(klon), INTENT(OUT)            :: flux_u1, flux_v1
327    REAL, DIMENSION(klon), INTENT(OUT)            :: tsurf_new
328    REAL, DIMENSION(klon), INTENT(OUT)            :: dflux_s, dflux_l     
329#ifdef ISO     
330    REAL, DIMENSION(ntraciso,klon), INTENT(OUT)    :: xtevap
331#endif     
332
333! Local variables
334!****************************************************************************************
335    LOGICAL                     :: check=.FALSE.
336    INTEGER                     :: i, j
337    REAL                        :: zfra
338    REAL, PARAMETER             :: t_grnd=271.35
339    REAL, DIMENSION(klon)       :: cal, beta, dif_grnd, capsol
340    REAL, DIMENSION(klon)       :: alb_neig, tsurf_tmp
341    REAL, DIMENSION(klon)       :: soilcap, soilflux
342    REAL, DIMENSION(klon)       :: u0, v0
343    REAL, DIMENSION(klon)       :: u1_lay, v1_lay
344    REAL sens_prec_liq(knon), sens_prec_sol (knon)
345    REAL, DIMENSION(klon)       :: lat_prec_liq, lat_prec_sol   
346
347#ifdef ISO       
348      real, parameter :: t_coup = 273.15
349      real, dimension(klon) :: fq_fonte_diag
350      real, dimension(klon) :: fqfonte_diag
351      real, dimension(klon) ::  snow_evap_diag
352      real, dimension(klon) ::  fqcalving_diag
353      real, DIMENSION(klon) :: run_off_lic_diag
354      real :: coeff_rel_diag
355      real  :: max_eau_sol_diag 
356      real, dimension(klon)  ::  runoff_diag   
357      integer ixt
358      REAL, DIMENSION(niso,klon) :: xtsnow_prec,xtsol_prec
359      REAL, DIMENSION(klon) :: snow_prec,qsol_prec 
360#endif     
361
362!****************************************************************************************
363! Start calculation
364!****************************************************************************************
365    IF (check) WRITE(*,*)'Entering surface_seaice, knon=',knon
366
367!****************************************************************************************
368! 1)
369! Flux calculation : tsurf_new, evap, fluxlat, fluxsens, flux_u1, flux_v1
370!                    dflux_s, dflux_l and qsurf
371!****************************************************************************************
372
373    tsurf_tmp(:) = tsurf_in(:)
374
375! calculate the parameters cal, beta, capsol and dif_grnd and then recalculate cal
376    CALL calbeta(dtime, is_sic, knon, snow, qsol, beta, capsol, dif_grnd)
377
378   
379    IF (soil_model) THEN
380! update tsoil and calculate soilcap and soilflux
381       CALL soil(dtime, is_sic, knon, snow, tsurf_tmp, tsoil,soilcap, soilflux)
382       cal(1:knon) = RCPD / soilcap(1:knon)
383       radsol(1:knon) = radsol(1:knon)  + soilflux(1:knon)
384       dif_grnd = 1.0 / tau_gl
385    ELSE
386       dif_grnd = 1.0 / tau_gl
387       cal = RCPD * calice
388       WHERE (snow > 0.0) cal = RCPD * calsno
389    ENDIF
390
391!    beta = 1.0
392    lat_prec_liq = 0.; lat_prec_sol = 0.
393
394! Suppose zero surface speed
395    u0(:)=0.0
396    v0(:)=0.0
397    u1_lay(:) = u1(:) - u0(:)
398    v1_lay(:) = v1(:) - v0(:)
399    CALL calcul_fluxs(knon, is_sic, dtime, &
400         tsurf_tmp, p1lay, cal, beta, cdragh, cdragh, ps, &
401         precip_rain, precip_snow, snow, qsurf,  &
402         radsol, dif_grnd, temp_air, spechum, u1_lay, v1_lay, gustiness, &
403         f_qsat_oce,AcoefH, AcoefQ, BcoefH, BcoefQ, &
404         tsurf_new, evap, fluxlat, fluxsens, dflux_s, dflux_l, &
405         sens_prec_liq, sens_prec_sol, lat_prec_liq, lat_prec_sol, rhoa)
406    do j = 1, knon
407      i = knindex(j)
408      sens_prec_liq_o(i,2) = sens_prec_liq(j)
409      sens_prec_sol_o(i,2) = sens_prec_sol(j)
410      lat_prec_liq_o(i,2) = lat_prec_liq(j)
411      lat_prec_sol_o(i,2) = lat_prec_sol(j)
412    enddo
413
414! - Flux calculation at first modele level for U and V
415    CALL calcul_flux_wind(knon, dtime, &
416         u0, v0, u1, v1, gustiness, cdragm, &
417         AcoefU, AcoefV, BcoefU, BcoefV, &
418         p1lay, temp_air, &
419         flux_u1, flux_v1) 
420
421!****************************************************************************************
422! 2)
423! Calculations due to snow and runoff
424!
425!****************************************************************************************
426
427#ifdef ISO
428   ! verif
429#ifdef ISOVERIF
430     do i=1,knon
431       if (iso_eau.gt.0) then
432           if (snow(i).gt.ridicule) then
433             call iso_verif_egalite_choix(xtsnow(iso_eau,i),snow(i), &
434     &           'interfsurf 964',errmax,errmaxrel)
435            endif !if ((snow(i).gt.ridicule)) then
436        endif !if (iso_eau.gt.0) then     
437      enddo !do i=1,knon 
438#endif
439   ! end verif
440
441    do i=1,knon
442      snow_prec(i)=snow(i)
443      do ixt=1,niso
444      xtsnow_prec(ixt,i)=xtsnow(ixt,i)
445      enddo !do ixt=1,niso
446      ! initialisation:
447      fq_fonte_diag(i)=0.0
448      fqfonte_diag(i)=0.0
449      snow_evap_diag(i)=0.0
450    enddo !do i=1,knon
451#endif
452
453    CALL fonte_neige( knon, is_sic, knindex, dtime, &
454         tsurf_tmp, precip_rain, precip_snow, &
455         snow, qsol, tsurf_new, evap &
456#ifdef ISO   
457     & ,fq_fonte_diag,fqfonte_diag,snow_evap_diag,fqcalving_diag   &
458     & ,max_eau_sol_diag,runoff_diag,run_off_lic_diag,coeff_rel_diag   &
459#endif
460     &   )
461
462
463#ifdef ISO
464! isotopes: tout est externalisé
465#ifdef ISOVERIF
466        write(*,*) 'ocean_forced_mod 377: call calcul_iso_surf_sic_vectall'
467        write(*,*) 'klon,knon=',klon,knon
468#endif
469         call calcul_iso_surf_sic_vectall(klon,knon, &
470             &   evap,snow_evap_diag,Tsurf_new,Roce,snow, &
471             &   fq_fonte_diag,fqfonte_diag,dtime,t_coup, &
472             &   precip_snow,xtprecip_snow,xtprecip_rain, snow_prec,xtsnow_prec, &
473             &   xtspechum,spechum,ps, &
474             &   xtevap,xtsnow,fqcalving_diag, &
475             &   knindex,is_sic,run_off_lic_diag,coeff_rel_diag,Rland_ice &
476     &  )   
477#ifdef ISOVERIF
478        write(*,*) 'ocean_forced_mod 391: sortie calcul_iso_surf_sic_vectall'
479          if (iso_eau.gt.0) then
480           do i=1,knon 
481              call iso_verif_egalite_choix(snow(i), &
482     &          xtsnow(iso_eau,i),'ocean_forced_mod 396', &
483     &          errmax,errmaxrel)
484           enddo ! do j=1,knon
485          endif !if (iso_eau.gt.0) then
486#endif
487!#ifdef ISOVERIF
488#endif   
489!#ifdef ISO
490   
491! Calculation of albedo at snow (alb_neig) and update the age of snow (agesno)
492!
493    CALL albsno(klon, knon, dtime, agesno(:), alb_neig(:), precip_snow(:)) 
494
495    WHERE (snow(1:knon) .LT. 0.0001) agesno(1:knon) = 0.
496
497    alb1_new(:) = 0.0
498    DO i=1, knon
499       zfra = MAX(0.0,MIN(1.0,snow(i)/(snow(i)+10.0)))
500       alb1_new(i) = alb_neig(i) * zfra +  0.6 * (1.0-zfra)
501    ENDDO
502
503    alb2_new(:) = alb1_new(:)
504
505  END SUBROUTINE ocean_forced_ice
506
507!************************************************************************
508! 1D case
509!************************************************************************
510!  SUBROUTINE read_tsurf1d(knon,sst_out)
511!
512! This subroutine specifies the surface temperature to be used in 1D simulations
513!
514!      USE dimphy, ONLY : klon
515!
516!      INTEGER, INTENT(IN)                  :: knon     ! nomber of points on compressed grid
517!      REAL, DIMENSION(klon), INTENT(OUT)   :: sst_out  ! tsurf used to force the single-column model
518!
519!       INTEGER :: i
520! COMMON defined in lmdz1d.F:
521!       real ts_cur
522!       common /sst_forcing/ts_cur
523!
524!       DO i = 1, knon
525!        sst_out(i) = ts_cur
526!       ENDDO
527!
528!      END SUBROUTINE read_tsurf1d
529!
530!
531!************************************************************************
532END MODULE ocean_forced_mod
533
534
535
536
537
538
Note: See TracBrowser for help on using the repository browser.