9 | | The fields read at a certain time step t in the NetCDF file correspond to: |
10 | | * the instantaneous value at t+dt of scalar variables : Temperature, Wind Speed, Air Pressure and Specific Humidity. |
11 | | * the mean value between t and t+dt for fluxes : Long and Short Wave incoming Radiation and the Precipitation. |
| 9 | The fields read at a certain time step t0 in the NetCDF file correspond to: |
| 10 | * the instantaneous value at t0+dt of scalar variables : Temperature, Wind Speed, Air Pressure and Specific Humidity. |
| 11 | * the mean value between t0 and t0+dt for fluxes : Long and Short Wave incoming Radiation and the Precipitation. |
14 | | '''AD (26/5/16)''': Note that, in the above case, the time at which we read the forcing is t+dt. Let's introduce an index itau of the forcing records: itau=1 is the first record in the nc file for all variables, etc. |
15 | | Imagine we are currently reading the record itau_n, coming juste after the record itau_nm1. These are the notation of dim2driver/read2dim, and we have itau_n=itau_nm1+1. The "time_stamps" corresponding to these two records are separated by dt (the dt between two records, and not dt_sechiba: dt=split*dt_sechiba). To make the link with the above notations of time, the time stamp of the record itau_n is t+dt, and the one of of itau_nm1 is t. |
| 14 | '''AD (26/5/16)''': Note that, in the above case, the time at which we read the forcing is t0+dt. Let's introduce an index itau of the forcing records: itau=1 is the first record in the nc file for all variables, etc. |
| 15 | Imagine we are currently reading the record itau_n, coming juste after the record itau_nm1. These are the notation of dim2driver/read2dim, and we have itau_n=itau_nm1+1. The "time_stamps" corresponding to these two records are separated by dt (the dt between two records, and not dt_sechiba=dt': dt=split*dt'). To make the link with the above notations of time, the time stamp of the record itau_n is t0+dt, and the one of of itau_nm1 is t0. |
17 | | Now we need to remember where we are in the code, and what we need the forcing for. When we read itau_n, with values corresponding to t+dt, sechiba hasn't yet run between t and t+dt. It has run (or been initialized) up to t, with forcing controlled by the forcing records itau_nm1 and before. '''So when we read the record itau_n corresponding to the time stamp t+dt, we know the state of sechiba at t, the forcing values at t (from itau_nm1), and we want to correctly define the forcing variables over each dt_sechiba between t and t+dt (dt=split*dt_sechiba).''' |
| 17 | Now we need to remember where we are in the code, and what we need the forcing for. When we read itau_n, with values corresponding to t0+dt, sechiba hasn't yet run between t0 and t0+dt. It has run (or been initialized) up to t0, with forcing controlled by the forcing records itau_nm1 and before. '''So when we read the record itau_n corresponding to the time stamp t0+dt, we know the state of sechiba at t0, the forcing values at t0 (from itau_nm1), and we want to correctly define the forcing variables over each dt' between t0 and t0+dt (dt=split*dt').''' |
25 | | * The Short-Wave radiation is interpolated using a function distribution that corresponds to the solar angle distribution over a forcing time period and conserving the average flux for the [t,t+dt] interval. Under low incidence angles this interpolation gives at times strange values, this needs to be checked and improved. |
| 25 | * The Short-Wave radiation is interpolated using a function distribution that corresponds to the solar angle distribution over a forcing time period and conserving the average flux for the [t0,t0+dt] interval. Under low incidence angles this interpolation gives at times strange values, this needs to be checked and improved. |
| 26 | |
| 27 | '''AD (26/5/2016):''' I agree on the above general guidelines for interpolation, '''but''' : |
| 28 | - LW should not be interpolated linearly: the mean value over the appropriate interval ([t0,t0+dt] in dim2driver) is the value read at t0+dt ; if we linearly interpolate LW between t0 and t0+dt, the mean value becomes LW(t0)+LW(t0+dt), 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. |
| 29 | - The simplest conservative interpolation is to use a uniform function, but it creates "steps". If we wanted to smooth this and remain conservative, we could use a function to constrain the time variations, as it is done with the zenith angle for SW. Based on the physics of LW and the data we have, we could define T4_mean as the mean of Tair^4^ over the 6 (split) dt' in the interpolation period. Then the value of LW(t0+n*dt') = LW(itau_n) * Tair(t0+n*dt')^4^ / T4_mean. I think this is conservative, but it needs to checked. |
| 30 | - Shall we understand that the default spred_prec is one in orchidee_driver ? We recently made a collective choice to take spred_prec=split/2, is it overlooked in orchideedriver? |
| 31 | - For the SW, what are the low incidence angle problems? It must be kept in mind that there is no particular reason why the diurnal cycle of SW should be either very smooth or well centered at noon. We do not deal with extra-terrestrial radiation, but incident SW at the surface, and the noise induced by clouds can be very large. |
| 32 | - Finally, the graphics below remain mysterious to me and I can't see any clear link with the above principles. |
| 33 | |