Opened 7 years ago
Closed 6 years ago
#248 closed enhancement (fixed)
keywords inter_lin and netrad_cons in dim2driver
Reported by: | aducharne | Owned by: | aducharne |
---|---|---|---|
Priority: | trivial | Milestone: | IPSLCM6.v1 |
Component: | Driver files | Version: | trunc |
Keywords: | Cc: |
Description
By default, dim2driver assumes the following keyword values:
inter_lin = .false.
netrad_cons = .false.
Then, in readdim2.f90, we find (L1574-1578, for daily_interpol=F):
IF ( netrad_cons ) THEN lwdown(:,:) = lwdown_n(:,:) ELSE lwdown(:,:) = (lwdown_n(:,:)-lwdown_nm1(:,:))*rw + lwdown_nm1(:,:) ENDIF
This reveals several inconsistencies:
1) inter_lin=F leads to linearly interpolate the downwelling LW flux
2) linearly interpolating the forcing fluxes between two successives records does not conserve mass or energy, so its illogical to associate netrad_cons = .false. to inter_lin = .false.
The explanation to the fact that linearly interpolation a flux does not conserve it with respect to value in the forcing is explained in https://forge.ipsl.jussieu.fr/orchidee/wiki/Branches/Driver_Improvements
Summary for LW : in dim2driver, the value read at t0+dt is the mean value over [t0,t0+dt]; if we linearly interpolate LW between t0 and t0+dt, the mean value becomes (LW(t0)+LW(t0+dt))/2, which is usually different from LW(t0+dt). So if we do a linear interpolation, we change the amount of energy that is received by the surface compared to what is defined in the forcing file.
Proposed solution:
For conservation, we need that netrad_cons = .true. by default
For clarity, we need that inter_lin = .false. when netrad_cons = .true.
This can be coded in dim2driver like below:
611 inter_lin = .FALSE. [...] 666 IF (inter_lin) THEN 667 !Config Key = NETRAD_CONS 668 !Config Desc = Conserve net radiation in the forcing 669 !Config Def = y 670 !Config If = INTER_LIN 671 !Config Help = When the interpolation is used the net radiation 672 !Config provided by the forcing is not conserved anymore. 673 !Config This should be avoided and thus this option should 674 !Config be TRUE (y). 675 !Config This option is not used for short-wave if the 676 !Config time-step of the forcing is longer than an hour. 677 !Config It does not make sense to try and reconstruct 678 !Config a diurnal cycle and at the same time conserve the 679 !Config incoming solar radiation. 680 !Config Units = [FLAG] 681 !- 682 netrad_cons = .FALSE. 683 CALL getin_p('NETRAD_CONS', netrad_cons) 684 ELSE 685 netrad_cons = .TRUE. 686 ENDIF
Agnès
Change History (5)
comment:1 Changed 7 years ago by aducharne
- Component changed from Anthropogenic processes to Driver files
- Milestone set to IPSLCM6.v1
- Owner changed from somebody to aducharne
- Priority changed from major to trivial
- Status changed from new to accepted
- Type changed from defect to enhancement
- Version set to trunc
comment:2 Changed 7 years ago by jpolcher
comment:3 Changed 6 years ago by jpolcher
In the new driver the following choice was made :
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! Read the configuration options for the time interpolations.
!
!Config Key = LWDOWN_CONS
!Config Desc = Conserve the longwave downward radiation of the forcing
!Config Def = n
!Config Help = This flag allows to conserve the downward longwave radiation
! provided in the forcing. It will do this by taking the closest
! neighbour in time from the forcing. This assumes that the forcing
! contains average fluxes. The default setting (LWDOWN_CONS=n) will
! force the model to perform a linear interpolation of the fluxes.
!Config Units = [FLAG]
!-
lwdown_cons = .FALSE.
CALL getin('LWDOWN_CONS', lwdown_cons)
!
It is probably to specify that LWdown is conserved as SWdown is treated independently.
comment:4 Changed 6 years ago by aducharne
La proposition faite dans le corps du ticket ne convient pas, car elle amène à changer le comportement par défaut du modèle.
Mais en regardant le code dim2driver plus attentivement, il semble que le keywork inter_lin ne sert à rien si ce n'est:
- à définir no_inter, qui lui même ne sert qu'à définir inter_lin
- à modifier la définition par défaut de netrad_cons
Si je suis bien ce qui est fait dans dim2driver:
a) keywords par défaut:
INTER_LIN=n
NETRAD_CONS=y
b) netrad_cons en concerne que la conservation du LWdown, comme indiqué par Jan
c) dim2driver se sert de l'info inter_lin pour modifier le comportement par défaut associé netrad_cons: comme inter_lin=F, alors netrad=F contrairement à ce qui est suggéré par le keyword
d) ce comportement est identique au comportement par défaut du nouveau driver, contrôlé par LWDOWN_CONS=n
Si cette analyse est correcte, une solution simple et conservative serait de faire les modifs suivantes dans dim2driver :
- supprimer les keywords INTER_LIN et NO_INTER,
- remplacer le keywork NETRAD_CONS par celui de LWDOWN_CONS, avec une valeur par défaut de n/false
- faire en sorte dans dim2driver que si LWDOWN_CONS=n, alors netrad_cons=F
On garde donc pour dim2driver le même comportement par défaut qu'avant, qui est aussi le même que pour orchideedriver, mais on l'obtient cette fois avec un keyword qui nous les bonnes indications (il s'agit de l'interpolation du LWDOWN et on ne le conserve pas). En plus, on en profite pour supprimer deux keywords inutiles, ce qui est toujours agréable !
comment:5 Changed 6 years ago by aducharne
- Resolution set to fixed
- Status changed from accepted to closed
Nous avons:
- supprimé INTER_LIN et NO_INTER
- splitté NETRAD_CONS en SWDOWN_CONS et LWDOWN_CONS
Leur valeur par défaut est FALSE, ce qui donne le meme comportement que celui par defaut avant les changements.
On a aussi nettoyé un peu : suppresion d'un else où on n'allait jamais.
Codé et testé par Agnès Josefine
Committé dans r4629
NETRAD_CONS is a badly names flag as net radiation cannot be conserved anyway. We can propose to conserve incoming radiative energy, that is all.
In orchideedriver the flag LWDOWN_CONS was added (revision 3567) so that the user can select to conserve this flux as well. The impact of conserving LWdown is small compared to other issues in the forcing data, but it is a legitimate condition to put onto the temporal interpolation and the user needs to have this choice.
So I have no preference as to the default value of LWDOWN_CONS !