"Grassland Temperature Sum" (or how it is called in English, german "Grünlandtemperatursumme" (GTS))

127 views
Skip to first unread message

Karen K

unread,
Dec 15, 2020, 4:13:50 PM12/15/20
to weewx-user
I found the aggregation type "growing degree day" ("growdeg"). 

There is a special version of that in Europe. In Germany it is called "Grünlandtemperatursumme". I found no translation to English. The word in the subject is translated word by word.

It is based on the daily average temperature, as growing degree day is. The base temperature is 0 degrees centigrade (32 degrees Fahrenheit).
  • In January, all the values are multiplied by 0.5.
  • In February, all the values are multiplied by 0.75.
  • Form March on, the values are used as is.
The sum is calculated from Jan. 1st to May 31st.

The day, when the value exceeds 200 in spring (if calculated in centigrade), is considered the start of growing of the plants.

Some german weather networks ask for those values (sum and date).

It seems to me that the actual aggregation function does not cover that version.



Ton vanN

unread,
Dec 15, 2020, 5:25:49 PM12/15/20
to weewx-user
Your observation is correct: "Grünland' is different from the 'general' GrowingDegreeDays:
wikipedia explains as per https://en.wikipedia.org/wiki/Growing_degree-day
With your observation if fact you open can of worms, because a large amount of variations of GrowingDegree Days related to different animals, insects and plants.

;-) Each country has it's variations as well .........


Op dinsdag 15 december 2020 om 17:13:50 UTC+1 schreef kk44...@gmail.com:

Tom Keffer

unread,
Dec 15, 2020, 11:44:34 PM12/15/20
to weewx-user
Aggregates like heating, cooling, or growing degree-days are not hardwired into WeeWX. They are actually XType extensions. You are free to define your own extension, or even override the existing definitions.

Take a look at class AggregateHeatCool, and follow the pattern.

-tk

--
You received this message because you are subscribed to the Google Groups "weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email to weewx-user+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/weewx-user/422873ce-dcbd-4e15-9748-573af73f6ccfn%40googlegroups.com.

Chuck Rhode

unread,
Dec 16, 2020, 3:18:08 AM12/16/20
to weewx...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tue, 15 Dec 2020 09:25:48 -0800 (PST)
Ton vanN <ton...@gmail.com> wrote:

> You open can of worms, because [there are] a large amount of
> variations of Growing Degree Days related to different animals,
> insects and plants.

See:

o University of California, Agriculture and Natural
Resources. "Research Models: Insects, Mites, Diseases, Plants, and
Beneficials." 2014. 15 Apr. 2018
<http://ipm.ucanr.edu/MODELS/index.html>.

o Coop, Len. "Library of Degree-Day Models for Insects and Plants." 11
Feb. 2007. Integrated Plant Protection Center, Oregon State U. 1
Nov. 2020 <http://uspest.org/wea/wealib.html.>

The models for insect development are very similar but have different
threshold and cutoff temperatures and use different cutoff techniques.
Models developed in one part of the world may not be immediately
applicable to other parts. Many insect species apparently have local
strains that are adapted to local conditions. The models are robust
enough to be useful without exactly matching local conditions, and
differences between modeling techniques are minor.

There are all kinds of weather-related mathematical models with
agribusiness applications beyond just weather prediction. Recently,
I stumbled upon one that models the growth of pollen tubes in apples
dependent upon temperature. The idea is that you can burn off the
flowers by spraying lime sulfur. The trick is to do this after the
pollen tubes for the king fruit have reached their ovaries and to keep
doing it often enough to keep new pollen tubes from reaching theirs.
This favors the earliest flowers while thinning the rest of the crop in
(hopefully) an organically acceptable way. There are attendant risks.
Early pollination may not be as reliable as you suppose or as you
hope. Different varieties of apples have different pollen-tube
lengths, and the germ plasm traverses them at different rates, so you
may not be using an appropriate model if you have a different
pollinator or an odd-ball variety of apple or even a variant of a well
tested variety. I guess the gee-whiz factor makes up for the
uncertainties of the technology.

- --
.. Be Seeing You,
.. Chuck Rhode, Sheboygan, WI, USA
.. Weather: http://LacusVeris.com/WX
.. 30° — Wind N 3 mph — Sky overcast.

-----BEGIN PGP SIGNATURE-----

iF0EARECAB0WIQT+MY/5I/LMPSswTbVg2/xipKOWUgUCX9l8XwAKCRBg2/xipKOW
UgvzAJ4nE9JmF89LohMhcmDJ9Y+eu2DbVgCfZnpV0byyhhQVdbIJr5Gf9ySgkk8=
=fJJ8
-----END PGP SIGNATURE-----

Karen K

unread,
Dec 18, 2020, 7:57:40 AM12/18/20
to weewx-user
Thank you for all the information you gave.

I will try to do some coding.

Chuck Rhode

unread,
Dec 18, 2020, 5:11:53 PM12/18/20
to weewx...@googlegroups.com
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Thu, 17 Dec 2020 23:57:40 -0800 (PST)
Karen K <kk44...@gmail.com> wrote:

> I will try to do some coding.

I can send you *python 3* formulas. These are new.

I had an extension that worked for v3 of WeeWX. See my codling moth
tribute site: http://LacusVeris.com/cydia, now obsolete.

I am working on a v4 version.

- --
.. Be Seeing You,
.. Chuck Rhode, Sheboygan, WI, USA
.. Weather: http://LacusVeris.com/WX
.. 29° — Wind S 6 mph

-----BEGIN PGP SIGNATURE-----

iF0EARECAB0WIQT+MY/5I/LMPSswTbVg2/xipKOWUgUCX9zizwAKCRBg2/xipKOW
UuewAJ91uIxUTpjtaFnXiFJug/WghmA/dgCbBq0eOdZKLWMUDVYiCQzNuGg0NfY=
=N2CH
-----END PGP SIGNATURE-----

Karen K

unread,
Dec 19, 2020, 10:33:20 AM12/19/20
to weewx-user
Oh, that's very interesting. 

Karen K

unread,
Dec 19, 2020, 10:50:17 AM12/19/20
to weewx-user
I have tried to program for myself for the last few days. And I included the function into the uploader that needs the value. So, when the new year starts, we will see, wether it works.

At the start of weewx the value ist calculated up to the actual day. It is saved within the thread class of the uploader. After that, once a day the value is updated according to the temperature average of the last day.

def calc_gts(self,time_ts,dbmanager):
    """calculate Grünlandtemperatursumme GTS"""

    # needed timestamps
    _sod_ts = weeutil.weeutil.startOfDay(time_ts) # start of day 
    _soy_ts = weeutil.weeutil.archiveYearSpan(time_ts)[0] # start of year
    _feb_ts = _soy_ts + 2678400 # Feb 1
    _mar_ts = _feb_ts + 2419200 # Mar 1 (or Feb 29 in leap year)
    _end_ts = _mar_ts + 7948800 # Jun 1 (or May 31 in leap year)

    # initialize if program start or new year
    if self.last_gts_date is None or self.last_gts_date < _soy_ts:
        self.last_gts_date = _soy_ts 
        self.gts_value = None 
        self.gts_date = None
        loginf("GTS initialized %s" %
               time.strftime("%Y-%m-%d",
               time.localtime(_soy_ts)))

    # calculate
    # This runs one loop for every day since New Year at program
    # start and after that once a day one loop, only. After May 31th
    # no loop is executed.

    _loop_ct=0
    while self.last_gts_date < _sod_ts and self.last_gts_date < _end_ts:
        # the day the average is calculated for
        _today = TimeSpan(self.last_gts_date,self.last_gts_date+86400)
        # calculate the average of the outside temperature
        _result = weewx.xtypes.get_aggregate('outTemp',_today,'avg',dbmanager) 
        # convert to centrigrade
        if _result is not None:
            _result = weewx.units.convert(_result,'degree_C')
        # check condition and add to sum
        if _result is not None and _result[0] is not None:
            if self.gts_value is None:
                self.gts_value=0
            _dayavg = _result[0]
            if _dayavg > 0:
                if self.last_gts_date < _feb_ts:
                    _dayavg *= 0.5
                elif self.last_gts_date < _mar_ts:
                    _dayavg *= 0.75
                self.gts_value += _dayavg
                if self.gts_value >= 200 and self.gts_date is None:
                    self.gts_date = self.last_gts_date

        # next day
        self.last_gts_date += 86400
        _loop_ct+=1

    loginf("GTS %s, %s loops" % (self.gts_value,_loop_ct))


Karen K

unread,
Feb 25, 2021, 8:18:24 PM2/25/21
to weewx-user
Reply all
Reply to author
Forward
0 new messages