Opened 6 years ago

Closed 6 years ago

Last modified 6 years ago

#158 closed enhancement (fixed)

Initialize t2m_longterm without reading file reftemp.nc

Reported by: jgipsl Owned by: jgipsl
Priority: major Milestone:
Component: Anthropogenic processes Version:
Keywords: Cc:

Description (last modified by jgipsl)

Currently in the trunk:

  • get_reftemp is always applied in the beginning of each execution and used to initialize several variables
  • t2m_longterm is read from restart file, calculated in season and used once in season
  • tlong_ref is t2m_longterm bound in the interval of tlong_ref_min, tlong_ref_max
  • tlong_ref is used outside season, before and after. It should have been in restart file.
  • Is starting without restart files,

In Nicoals Viovy's version, get_reftemp is not used. Instead t2m_longterm is calculated starting with t2m_daily and updated progressively using a tau_longterm increasing from 2 to a final value of tau_longterm. It has been decided during the Tuesday meeting to take this functionality into the trunk.

Wanted behaviour

  • t2m_longterm should be bounded in the interval [tlong_ref_min, tlong_ref_max] after its calculation
  • tlong_ref removed (it is redundant with t2m_longterm)
  • tau_longterm_max is the maximum value for tau_longterm (default value 3 years as before)
  • tau_longterm increases from 2 uptil tau_longterm_max
  • tau_longterm is added in restart
  • Change default value for REFTEMP_FILE=NONE

Initialization:

IF t2m_longterm is not in the restart file
   Get REFTEMP_FILE value from run.def
      IF REFTEM_FILE=NONE (default)
           Initialize t2m_longterm=t2m_daily and tau_longterm=2
      ELSE REFTEMP_FILE=filename
           Read t2m_longterm from file with get_reftemp. Initialize tau_longterm=tau_longterm_max
ELSE IF t2m_longterm in restart file BUT NOT tau_longterm
   Set tau_longterm=tau_longterm_max + Make a Warning
ELSE t2m_longterm and tau_longterm is both read from restart file

Calculation in season:

! Update tau_longterm
  tau_longterm = MIN(tau_longterm+dt,tau_longterm_max)
    
! Recalculate the reference temperature using the old reference temperature and the current temperature
  t2m_longterm(:) = ( t2m_longterm(:) * ( tau_longterm - dt ) + &
        t2m_daily(:) * dt ) / tau_longterm

! The longterm reference is not allowed to go outside the interval [tlong_ref_min, tlong_ref_max]
  t2m_longterm(:) = MAX( tlong_ref_min, MIN( tlong_ref_max, t2m_longterm(:) ) )

Note:

npp_longterm and turnover_longterm are also calculated using tau_longterm. They will also benefit from smoother starting phase (the first 3 years tau_longterm increases each day uptil tau_longterm_max).

Related issues:

  • The reference temperature is also needed for the soil freezing process. Maybe the above calculations could be moved to sechiba.
  • Interpolation with subroutine get_reftemp have problems. See ticket #130. In above modifications, get_reftemp is not longer used.

Change History (4)

comment:1 Changed 6 years ago by jgipsl

  • Description modified (diff)

comment:2 Changed 6 years ago by jgipsl

  • Resolution set to fixed
  • Status changed from new to closed

Done rev [2441]

comment:3 Changed 6 years ago by jgipsl

Modifications in rev 2441 made error in initialization as tref was removed.

In rev [2452]:
Corrected initialization of tsurf_daily, t2m_month, t2m_week, tsoil_month: if these variables are not in restart file, use t2m to initialize.

comment:4 Changed 6 years ago by jgipsl

Corrected bug in initialisation without restart files:

t2m which was used for initialization in readstart for the above variable was not correct. t2m came from the variable t2mdiag in sechiba_main but at the initialization phase, this variable were not yet calculated. Changed to use t2m in sechiba in call slowproc_main initialisation phase. done in rev [2501]

Note: See TracTickets for help on using tickets.