J.N.G. Hargreaves
05 Feb 2008
The Ausfarm-Stock (Stock) component is used in APSIM to graze APSIM-Plant derived crops, such as Lucerne, Lablab and Wheat. The Ausfarm-Supplement (Supplement) component can also be used as a supplementary feed source for stock. Management operations can be carried out such as buying and selling of stock, supplementary feeding and moving stock to another paddock. Currently the paddock sizes are fixed at one hectare.
To use Stock in an APSIM simulation, three companion APSIMUI components are required – StockScienceConverter, StockHerbageConverter and FarmwiseSequencer.
e.g.

When Supplement is used, its companion SupplementScienceConverter is also required.
e.g.

All of these components are found in the APSIMUI Standard Toolbox in the Animals Folder. E.g.

A sample simulation (Wether_Lucerne_Supplement) of grazing wethers on lucerne with supplementary feeding of wheat is provided under the New menu.
The Stock
component initialises with default properties and no animals.
The StockScienceConverter initialises with the values specified in its properties grid e.g.

o Debug
o Stock_module
o Conversion_model
o Fraction_faeces_added
o Fraction_urine_added
The StockHerbageConverter initialises with the values specified in its properties grid. E.g.

o Debug
o Conversion_model
o Herbage_model
o Herbage_module_name
The
FarmwiseSequencer initialises with properties specified in its INI file. These
properties translate APSIM events to Ausfarm events and should only be altered
after consultation with the SEG.
Supplement initialises with the values specified in its properties grid.
![]()
o Spoilage_time
The supplement store properties define the initial values of each supplement being used in the simulation.

The SupplementScienceConverter initialises with values specified in its properties grid. E.g.

o Debug
o Supplement_module
Pre-defined management rules of stock (cattle and sheep) and supplement feeding are found in the Stock folder under the Management folder in the Standard Toolbox.
E.g.

Pre-defined cattle management rules for buying, selling and moving stock.

Pre-defined sheep management rules for buying and selling stock.

Pre-defined supplement management rules for buying, mixing and feeding stock.

1. Purpose of Component
The STOCK component encapsulates the GRAZPLAN animal biology model, as described in:
Freer M, Moore AD & Donnelly JR (1997). GRAZPLAN: decision support systems for Australian grazing enterprises. II. The animal biology model for feed intake, production and reproduction and the GrazFeed DSS. Agricultural Systems 54 , 77-126.
All animals represented in a component instance share a common genotype.
The animals represented by a component instance are classified into groups . The members of each animal group have the same age class, but may have a range of ages (for example, an animal group containing mature animals may include four-year-old, five-year-old and six-year-old stock). The members of each animal group also have the same stage of pregnancy and/or lactation; the same number of suckling offspring; and occupy the same paddock. The set of animal groups changes as animals enter and leave the simulation, and as physiological events such as maturation, birth or weaning take place. Animal groups that become sufficiently similar are merged into a single group.
Each animal group has a unique, internally-assigned integer index , starting at 1. Because the set of groups present in a component instance is dynamic, the index number associated with a particular group may change over time.
Each animal group is also assigned a paddock . Paddocks are referred to by name in the STOCK component. It is the user's responsibility to ensure that paddock names correspond to instances of the PADDOCK component or other sources of necessary driving variables.
Each group also has a user-assigned tag and priority , which need not be unique. Tag values are generally used to manage distinct groups of animals in a common fashion. For example, all lactating ewes may be assigned the same tag value, which may then be used in management rules that keep them grazing together. Animal groups with different tag values are not merged even if they are otherwise similar. If tag values are assigned sequentially starting at 1, they can be used to generate summary variables. Priority values are used to allocate animals to paddocks in the draft event.
2. Initialisation Properties
The initialisation variable set is nearly completely optional. The idea is to allow the user to specify a minimal information set as well as a maximally detailed initialisation.
Property |
Type |
Units |
Required? |
Description |
breed |
string |
Yes |
Name of the animal breed. The set of valid breed names is set out below. Implicit in the breed is the animal type (sheep or cattle). |
|
cattle : number : sex : age : weight : max_prev_wt : pregnant : lactating : no_foetuses : no_suckling : birth_cs : calf_wt : paddock : tag : priority |
record integer4 string double double double integer4 integer4 integer4 integer4 double double string integer4 integer4 |
d kg kg d d - kg |
No |
Initial state of each animal group for cattle. Not meaningful if breed is a sheep breed. Number of animals. Feasible values are ‘cow', ‘cows', ‘heifer', ‘heifers', ‘steer', ‘steers', ‘bull', ‘bulls'. Age of the animals. Unfasted live weight of the animals. Highest weight recorded to date. Zero denotes not pregnant; 1 or more denotes the time since conception. Only meaningful for females. Zero denotes not lactating; 1 or more denotes the time since parturition. Only meaningful for females. Number of foetuses. Only meaningful for females with pregnant > 0. Number of suckling calves. Only meaningful for females with lactating > 0. Condition score at parturition. Only meaningful for females with lactating > 0. Unfasted live weight of suckling calves. Only meaningful for females with lactating > 0. Paddock occupied by the animals. Initial tag value for the animal group. Priority accorded the animals in the draft event |
conception |
double[ ] |
- |
No |
Expected rates of conception with 1, 2 and 3 young for mature ewes or cows in average body condition, over a mating period lasting 2.5 oestrus cycles. Only the first two elements are significant for cattle. |
death_rate |
double |
/yr |
No |
Base rate of animal mortality. Default is 0.0. |
fleece_yield |
double |
kg/kg |
No |
Clean fleece weight as a proportion of greasy fleece weight. Default is 0.70. Only meaningful for sheep. |
male_breed |
string |
No |
Name of the breed of rams or bulls to which ewes or cows in this component instance will be mated. The default is breed . The set of valid breed names is set out below. |
|
male_srw |
double |
kg |
No |
Standard reference weight of the rams or bulls to which ewes or cows in this component instance will be mated.. The default value depends on male_breed . |
max_fibre_diam |
double |
m m |
No |
Maximum average wool fibre diameter. The default depends on breed . |
param_file |
string |
No |
Name of a file containing genotypic parameters. Default behaviour is to use a default parameter set that is compiled into STOCK.DLL. |
|
peak_milk |
double |
kg |
No |
Potential maximum milk yield per head, in 4% fat-corrected milk equivalents. Only significant for cattle. The default value is 20.0. |
ref_fleece_wt |
double |
kg |
No |
Breed reference fleece weight. The default value depends on breed . |
sheep : number : sex : age : weight : max_prev_wt : fleece_wt : fibre_diam : pregnant : lactating : no_young : birth_cs : lamb_wt : lamb_fleece_wt : paddock : tag : priority |
record integer4 string double double double double double string integer4 integer4 integer4 integer4 double double double |
d kg kg kg m m d d - kg kg |
No |
Initial state of each animal group for sheep. Not meaningful if breed is a cattle breed. Number of animals. Feasible values are ‘ewe', ‘ewes', ‘wether', ‘wethers', ‘ram', ‘rams', ‘crypto', ‘cryptos'. Age of the animals. Unfasted live weight of the animals. Highest weight recorded to date. Greasy fleece weight of the animals. Average wool fibre diameter of the animals. Paddock occupied by the animals. Initial tag value for the animal group. Zero denotes not pregnant; 1 or more denotes the time since conception. Only meaningful for ewes. Zero denotes not lactating; 1 or more denotes the time since parturition. Only meaningful for ewes. Number of foetuses or suckling lambs. Only meaningful for ewes. Condition score at parturition. Only meaningful for ewes. Unfasted live weight of suckling lambs. Only meaningful for ewes with lactating > 0. Greasy fleece weight of suckling lambs. Only meaningful for ewes with lactating > 0. |
srw |
double |
kg |
No |
Breed standard reference weight. The default value depends on breed . |
Feasible values for the breed and male_breed properties are:
Sheep breeds |
Sheep breeds |
Cattle breeds |
Cattle breeds |
|||
‘black face x white face' |
‘polwarth' |
‘angus' |
‘friesian' |
|||
‘border leicester' |
‘polypay' |
‘ayrshire' |
‘friesian x british' |
|||
‘border leicester x merino' |
‘romney' |
‘beef shorthorn' |
‘guernsey' |
|||
‘columbia' |
‘ryeland' |
‘brahman' |
‘hereford' |
|||
‘corriedale' |
‘southdown' |
‘brahman x british' |
‘holstein' |
|||
‘delaine-merino' |
‘suffolk' |
‘brown swiss' |
‘holstein x british' |
|||
‘dorset x merino' |
‘targhee' |
‘charolais' |
‘jersey' |
|||
‘dorset' |
‘texel' |
‘charolais x british' |
‘limousin' |
|||
‘finnsheep' |
‘US corriedale' |
‘charolais x friesian' |
‘sahiwal' |
|||
‘hampshire' |
‘US romney' |
‘charolais x holstein' |
‘simmental' |
|||
‘large merino' |
‘US southdown' |
‘chianina' |
‘south devon' |
|||
‘medium merino' |
‘US suffolk' |
‘dairy shorthorn' |
||||
‘merino' |
3. Subscribed events – sequenced
3.1. do_stockDefault sequencing: 7000 Computes development, intake, growth and reproduction of all animals. |
4. Subscribed events – other
4.1. buy
Causes a given number and type of animals to enter the simulation.
Parameter |
Type |
Units |
Description |
number |
integer4 |
Number of animals to be bought |
|
sex |
string |
Sex of the animals. Feasible values are as for sheep : sex or cattle : sex , as appropriate. |
|
age |
double |
months |
Average age of the animals |
weight |
double |
kg |
Average unfasted live weight of the animals |
fleece_wt |
double |
kg |
Average greasy fleece weight of the animals. Only meaningful in sheep. |
pregnant |
integer4 |
d |
Zero denotes not pregnant; 1 or more denotes the time since conception. Only meaningful for females. |
lactating |
integer4 |
d |
Zero denotes not lactating; 1 or more denotes the time since parturition in lactating animals. Only meaningful for females. |
no_young |
integer4 |
Number of foetuses and/or suckling offspring. |
|
young_wt |
double |
kg |
Average unfasted live weight of any suckling lambs or calves. |
young_fleece_wt |
double |
kg |
Average greasy fleece weight of any suckling lambs. |
4.2. castrate
Converts ram lambs to wether lambs, or bull calves to steers. If the animal group(s) denoted by group has no suckling young, has no effect.
If the number of male lambs or calves in a nominated group is greater than the number to be castrated, the animal group will be split; the sub-group with castrated offspring will remain at the original index and the sub-group with offspring that were not castrated will be added at the end of the set of animal groups.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group, the lambs or calves of which are to be castrated. A value of zero denotes that each animal group should be processed in turn until the nominated number of offspring has been castrated. |
|
number |
integer4 |
Number of male lambs or calves to be castrated. |
4.3. draft
Assigns paddocks to animals in such a way that animal groups with the lowest tag values are placed in the paddocks with the best pasture. This event has no parameters.
4.4. dryoff
Ends lactation in cows that have already had their calves weaned. The event has no effect on other animals.
If the number of cows in a nominated group is greater than the number to be dried off, the animal group will be split; the sub-group that is no longer lactating will remain at the original index and the sub-group that continues lactating will be added at the end of the set of animal groups.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group for which lactation is to end. A value of zero denotes that each animal group should be processed in turn until the nominated number of cows has been dried off. |
|
number |
integer4 |
4.5. join
Commences mating of a particular group of animals. If the animals are not empty females, or if they are too young, has no effect.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group for which mating is to commence. A value of zero denotes that all empty females of sufficient age should be mated. |
|
mate_days |
integer4 |
d |
Length of the mating period. |
4.6. move
Changes the paddock to which an animal group is assigned.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group to be moved. |
|
paddock |
string |
Name of the paddock to which the animal group is to be moved. |
4.7. sell
Removes animals from the simulation.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group from which animals are to be removed. A value of zero denotes that each animal group should be processed in turn until the nominated number of animals has been removed. |
|
number |
integer4 |
Number of animals to remove. |
4.8. shear
Shears sheep. The event has no effect on cattle.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group to be shorn. A value of zero denotes that all animal groups should be processed. |
|
sub_group |
string |
Denotes whether the main group of animals, suckling lambs, or both should be shorn. Feasible values are the null string (main group), ‘adults' (main group), ‘lambs' (suckling lambs), ‘both' (both). |
4.9. sort
Rearranges the list of animal groups in ascending order of tag value. This event has no parameters.
4.10. split
Creates two or more animal groups from the nominated group. One of these groups is placed at the end of the animal group list.
The division may only persist until the beginning of the next do_stock step, when sufficiently similar groups of animals are merged.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group to be split. |
|
type |
string |
Feasible values are: ‘age' All animals younger than value days are moved to a new group. ‘weight' All animals with live weight less than value kg are moved to a new group. ‘young' Only animals with suckling offspring are affected. Mothers with different sexes of young are divided, with the group with all male offspring remaining in place. For mothers with twins, three groups are created; a group with two male offspring, a group with two female offspring, and a group with one of each. ‘number' value animals remain in place and the remainder form a new group |
|
value |
double |
Threshold age or weight, or the number to be split, depending on the value of type . Ignored if type is ‘young'. |
4.11. tag
Sets the tag value for an animal group.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group to be assigned a tag value. |
|
value |
integer4 |
Tag value to be assigned. |
4.12. wean
Weans some or all of the lambs or calves from an animal group. The newly weaned animals are added to the end of the list of animal groups, with males and females in separate groups.
Parameter |
Type |
Units |
Description |
group |
integer4 |
Index number of the animal group from which animals are to be removed. A value of zero denotes that each animal group should be processed in turn until the nominated number of lambs or calves has been weaned. |
|
sex |
string |
Feasible values are: ‘all' Female and male lambs or calves are to be weaned. ‘female' Only female lambs or calves are to be weaned. ‘male' Only male lambs or calves are to be weaned. |
|
number |
integer4 |
Number of lambs or calves to be weaned. |
5. Methods
None.
6. Published events
6.1. remove_herbage
Indicates the removal of herbage and seeds. This event is directed to each component instance that provides the Stock instance with a value for the plant2stock driving property.
Parameter |
Type |
Units |
Description |
herbage |
double[ ] |
kg/ha |
Mass of shoots removed in each of 5 digestibility classes. |
seed |
double[ ] |
kg/ha |
Mass of unripe and ripe seeds removed. |
6.2. add_excreta
Indicates the excretion of faeces and urine into a paddock. Different instances of this event are directed to each component subscribing to it, with parameters depending upon the name of the paddock component to which the subscribing component belongs.
Parameter |
Type |
Units |
Description |
faeces_om : weight : n : p : s : ash_alk |
record double double double double double |
kg/ha kg/ha kg/ha kg/ha mol/ha |
Organic matter in excreted faeces: Mass (as DM) of faeces to be added. Mass of organic nitrogen in faeces. Mass of organic phosphorus in faeces. Mass of organic sulphur in faeces. Ash alkalinity in faeces. |
faeces_inorg : n : p : s |
record double double double |
kg/ha kg/ha kg/ha |
Inorganic nutrients in excreted faeces: Mass of inorganic nitrogen in faeces. Mass of inorganic phosphorus in faeces. Mass of inorganic sulphur in faeces. |
urine : volume : urea : pox : so4 : ash_alk |
record double double double double double |
m 3 /ha kg/ha kg/ha kg/ha mol/ha |
Excreted urine: Volume of excreted urine. Urea-N in excreted urine. Phosphate-P in excreted urine. Sulphate-S in excreted urine. Ash alkalinity in excreted urine. |
7. Driving properties
Property |
Type |
Units |
Event:State |
Number |
Description |
area |
double |
ha |
0+ |
Area of each paddock. |
|
latitude |
double |
deg |
1 |
Latitude (south is negative). |
|
slope |
double |
deg |
0+ |
Slope of each paddock. |
|
daylength |
double |
hr |
1 |
Day length including civil twilight. |
|
plant2stock : herbage : dm : dmd : cp_conc : p_conc : s_conc : prot_dg : ash_alk : height_ratio : propn_green : legume : select_factor : seed : dm : dmd : cp_conc : p_conc : s_conc : prot_dg : ash_alk : height_ratio : seed_class |
record record[ ] double double double double double double double double double double double record[ ] double double double double double double double double integer4[ ] |
kg/ha - kg/kg kg/kg kg/kg kg/kg mol/kg - - - - kg/ha - kg/kg kg/kg kg/kg kg/kg mol/kg - |
0+ |
Description of the pasture for use by the ruminant model. |
|
supp_eaten : paddock : eaten |
record[ ] string double |
kg |
0-1 |
Consumption of supplementary feed by animals. Name of a paddock Amount of supplementary feed eaten by animals in this paddock. |
|
time : startDay : startSec : startSecPart : endDay : endSec : endSecPart |
record integer4 integer4 double integer4 integer4 double |
d s s d s s |
1 |
Current time step. |
|
waterlog |
double |
- |
0+ |
Waterlogging index for each paddock. |
|
weather : maxt : mint : rain : snow : radn : vpd : wind |
record double double double double double double double |
ºC ºC mm/d mm/d MJ/m 2 /d kPa m/s |
1 |
Weather record. |
If the following properties are not found, then alternative properties are subscribed to instead:
Property |
Alternative |
Type |
Units |
Event:State |
Number |
Description |
weather |
maxt |
double |
ºC |
do_stock :0 |
1 |
Maximum air temperature. |
weather |
mint |
double |
ºC |
do_stock :0 |
1 |
Minimum air temperature. |
weather |
rain |
double |
mm |
do_stock :0 |
1 |
Precipitation in all forms other than snow. |
weather |
wind |
double |
m/s |
do_stock :0 |
1 |
Average wind speed |
8. Owned properties
All initialisation properties are readable. In addition, the following owned properties are available:
(a) Standard properties
Property |
Type |
Units |
Description |
name |
string |
Fully-qualified name of the component. |
|
type |
string |
Value is “Stock”. |
|
version |
string |
Value is “1.0”. |
|
author |
string |
Value is “CSIRO Plant Industry”. |
|
active |
Boolean |
Denotes whether or not the component is active. |
|
state |
string |
SDML description of the current state. |
(b) Component-specific properties
Each entry in the following table describes between one and six variables: the named variable and five variants obtained by appending the texts: “_ yng ”, “_ all ”, “_ tag ”, “ _yng _ all ” and “ _yng _ tag ”.
Note that the animal model will automatically merge and split groups of animals, so that the index position of a particular group of animals in the array variables will not necessarily remain constant.
Property |
Type |
Units |
Description |
_all |
_tag |
_yng |
age |
double[ ] |
d |
Age of animals. |
x |
x |
x |
age_months |
double[ ] |
- |
Age of animals, in months. |
x |
x |
x |
base_wt |
double[ ] |
kg |
Fleece-free, conceptus-free weight. |
x |
x |
x |
birth_cs |
double[ ] |
- |
Condition score at last parturition; zero if lactating =0 |
x |
x |
|
c_fleece_wt |
double[ ] |
kg |
Current clean fleece weight. |
x |
x |
x |
cfleece_growth |
double[ ] |
kg/d |
Growth rate of clean fleece. |
x |
x |
x |
cond_score |
double[ ] |
- |
Condition score of animals (1-5 scale). |
x |
x |
x |
cp_intake |
double[ ] |
kg/d |
Crude protein intake per head. |
x |
x |
x |
dse |
double[ ] |
- |
Dry sheep equivalents”, based on potential intake. |
x |
x |
x |
faeces : weight : n : p : s : ash_alk |
record[ ] double double double double double |
kg/d kg/d kg/d kg/d mol/d |
Faecal dry matter and nutrients per head. |
x |
x |
x |
faeces_inorg : n : p : s |
record[ ] double double double |
kg/d kg/d kg/d |
Inorganic nutrients excreted in faeces, per head. |
x |
x |
x |
fibre_diam |
double[ ] |
m m |
Current average wool fibre diameter. |
x |
x |
x |
fibre_growth_diam |
double[ ] |
m m |
Fibre diameter of the current day's wool growth. |
x |
x |
x |
fleece_wt |
double[ ] |
kg |
Current greasy fleece weight. |
x |
x |
x |
intake : weight : n : p : s : ash_alk |
record[ ] double double double double double |
kg/d kg/d kg/d kg/d mol/d |
Total intake per head of dry matter and nutrients by each animal group. |
x |
x |
x |
lactating |
double[ ] |
d |
If the animals are lactating, the number of days since birth of the lamb or calf; zero otherwise. |
x |
x |
|
max_prev_wt |
double[ ] |
kg |
Maximum previous basal weight (fleece-free, conceptus-free) attained by each animal group. |
x |
x |
x |
me_intake |
double[ ] |
MJ/d |
Intake per head of metabolizable energy. |
x |
x |
x |
milk_me |
double[ ] |
MJ/d |
Metabolizable energy produced in milk (per head) by each animal group |
x |
x |
|
milk_wt |
double[ ] |
kg/d |
Weight of milk produced per head, on a 4% fat-corrected basis. |
x |
x |
|
no_female |
integer4[ ] |
Number of female animals in each animal group. |
x |
x |
x |
|
no_foetuses |
double[ ] |
Number of foetuses per head in each animal group. |
x |
x |
||
no_groups |
integer4 |
Number of animal groups. |
||||
no_male |
integer4[ ] |
Number of male animals in each animal group. |
x |
x |
x |
|
no_suckling |
double[ ] |
Number of unweaned lambs or calves per head in each animal group. |
x |
x |
||
number |
integer4[ ] |
Number of animals in each animal group. |
x |
x |
x |
|
paddock |
string[ ] |
Paddock occupied by each animal group. |
||||
past_intake : weight : n : p : s : ash_alk |
record[ ] double double double double double |
kg/d kg/d kg/d kg/d mol/d |
Intake per head of pasture dry matter and nutrients by each animal group. |
x |
x |
x |
pregnant |
double[ ] |
d |
If the animals are pregnant, the number of days since conception; zero otherwise. |
x |
x |
|
priority |
integer4[ ] |
Priority score assigned to each animal group; used in drafting. |
||||
retained_n |
double[ ] |
kg/d |
Nitrogen retained within the animals, on a per-head basis. |
x |
x |
x |
retained_p |
double[ ] |
kg/d |
Phosphorus retained within the animals, on a per-head basis. |
x |
x |
x |
retained_s |
double[ ] |
kg/d |
Sulphur retained within the animals, on a per-head basis. |
x |
x |
x |
sex |
string[ ] |
See the sex field of the sheep and cattle initialisation variables. Returns “heifer” for cows under two years of age. |
||||
supp_eaten : paddock : eaten |
record[ ] string double |
kg |
Consumption of supplementary feed by animals. Name of a paddock Amount of supplementary feed eaten by animals in this paddock. |
|||
supp_intake : weight : n : p : s : ash_alk |
record[ ] double double double double double |
kg/d kg/d kg/d kg/d mol/d |
Intake per head of supplement dry matter and nutrients by each animal group. |
x |
x |
x |
tag_no |
integer4[ ] |
Tag value assigned to each animal group. |
||||
trampling |
double |
kg/ha |
Mass of grazers per unit area. The value returned depends on the requesting component. |
|||
urine_n |
double[ ] |
kg/d |
Urinary nitrogen output per head. |
x |
x |
x |
urine_p |
double[ ] |
kg/d |
Urinary phosphorus output per head. |
x |
x |
x |
urine_s |
double[ ] |
kg/d |
Urinary sulphur output per head. |
x |
x |
x |
weight |
double[ ] |
kg |
Average live weight of each animal group. |
x |
x |
x |
wt_change |
double[ ] |
kg/d |
Rate of change of base weight of each animal group. |
x |
x |
x |
Configuration Details
Title: Stock Component Description
Created by: A.D. Moore
Modified by: A.D. Moore
Processor: Microsoft Word 2002
Printed: 15 Dec 2003
Revision History
Version |
Date |
Changes |
0.1 |
12 Dec 1997 |
First draft |
0.2 |
17 Dec 1997 |
Second draft |
0.3 |
4 Aug 1998 |
Third draft |
0.4 |
10 Dec 2003 |
Revised to match pre-release version of component. *_tag properties added |
0.5 |
15 Dec 2003 |
supp_eaten added |
Document Distribution Policy
All versions: Internal use only
Environmental information
The Stock component implements alternative interfaces to obtain weather data; I have only provided the APSIM-compatible interface here.
Property |
Type |
Units |
Permitted number of values |
Description |
time |
record |
Exactly 1 |
Current time step in standard format. |
|
latitude |
double |
deg |
Exactly 1 |
Latitude (south is negative). |
daylength |
double |
hr |
Exactly 1 |
Day length including civil twilight. |
maxt |
double |
ºC |
Exactly 1 |
Maximum air temperature. |
mint |
double |
ºC |
Exactly 1 |
Minimum air temperature. |
rain |
double |
mm |
Exactly 1 |
Precipitation in all forms other than snow. |
wind |
double |
m/s |
Exactly 1 |
Average wind speed |
waterlog |
double |
- |
Zero or more |
Waterlogging index for each paddock. |
The first six of these drivers will cause no difficulty. The wind driver is used in computing the energy requirement to maintain body temperature under cold conditions; it can be set to (say) a constant 2.0 m/s if wind speed data are not available. The waterlog driver is an index that describes the degree of waterlogging of the soil (which is modelled as affecting the time spent grazing); it is optional and can be ignored in your context.
Paddock information
Property |
Type |
Units |
Permitted number of values |
Description |
area |
double |
ha |
Zero or more |
Area of each paddock. |
slope |
double |
deg |
Zero or more |
Slope of each paddock |
In the Stock component, each group of animals is taken to reside in a paddock. The list of valid paddock names is obtained by looking for the components that have the area property and then obtaining the names of these components, i.e. a paddock is defined as any entity with an area. If no component in the simulation has the area property, then the Stock component sets itself up with a single “paddock” that has the null string for its name, an area of 1.0 ha and zero slope.
The slope values are used to compute the energy cost associated with movement.
The usual configuration is to have the paddock components/systems at the same level in the component tree as the Stock component.
Herbage information
At each time step, the Stock component requests the plant2stock driving property. Each value of plant2stock is allocated to one of the paddocks by parsing the name of the component sending it. The herbage present in each paddock is then summarised before being used in the computations of animal intake. In the case where no paddocks have been identified, all the “plant” components that provide plant2stock are allocated to the null paddock.
Once the intake rates of all animals have been computed, the rates for all animals in a paddock are summed and then allocated between the components in that paddock that provided a value for the plant2stock driver. Each such component is then sent a remove_herbage event that contains the rate of herbage removal for that plant component.
The plant2stock driving property is a record with six fields:
Field |
Type |
Units |
Description |
herbage |
array of records |
Mass and quality of the herbage on offer. The herbage is split into a number of pools that are distinguished by their DM digestibility; each of these pools is described by one element of the array. The fields of the sub-records are set out below. |
|
propn_green |
double |
- |
Proportion of the total herbage mass that is green |
legume |
double |
- |
Proportion of the total herbage mass that is legume. Usually 0.0 or 1.0 |
select_factor |
double |
- |
Species-specific effect on the relationship between digestibility and voluntary intake. Typical values are 0.0 for C3 grasses and legumes and 0.16 for C4 grasses. |
seed |
array of records |
Mass and quality of unripe and ripe seeds (elements 1 and 2, respectively). The fields of the sub-records are the same as for the herbage field. |
|
seed_class |
array of integer4 |
- |
“Equivalent digestibility class” for unripe and ripe seeds (elements 1 and 2, respectively). Valid values are 1-6 or 0, where 1 denotes that seeds will be selected at the same time as 80% digestible herbage, 2 corresponds to 70% herbage, etc. A zero value denotes that seeds are not grazed. |
The fields of the sub-records in plant2stock : herbage and plant2stock : seed are:
Field |
Type |
Units |
Description |
dm |
double |
kg/ha |
Mass (dry matter basis) of the herbage or seed pool |
dmd |
double |
- |
Dry matter digestibility (0-1, not percentage) |
cp_conc |
double |
kg/kg |
Crude protein concentration. Can be estimated as 6.25 x [N] |
p_conc |
double |
kg/kg |
Phosphorus concentration. Can reasonably be estimated by assuming a fixed N:P ratio. |
s_conc |
double |
kg/kg |
Sulphur concentration. Can reasonably be estimated by assuming a fixed N:S ratio. |
prot_dg |
double |
kg/kg |
Protein degradability. In the absence of better information, can be estimated as dmd +0.10 |
ash_alk |
double |
mol/kg |
Ash alkalinity. |
height_ratio |
double |
- |
An index of the bulk density of the herbage. The height ratio for herbage should be computed as 100/(0.03 x BD ), where BD is the herbage bulk density in g/m 3 . This value should be set to 1.0 for seed pools. |
One way to obtain a distribution of herbage mass into DMD classes is given on page 32 of the technical paper on GrazFeed that can be found via http://www.csiro.au/index.asp?type=faq&id=Grazplan .
Supplementary feed information
At each time step, the Stock component requests the supp2stock driving property. This driving property is optional. The supp2stock property returns the amount and quality of supplementary feed that is present in each paddock. All animals resident in a paddock can access the corresponding quantity of supplementary feed (it is allocated between them in proportion to their maximum intake rate). To provide this property, include the Supplement component in the simulation.
The supp2stock driving property is an array of records. Each sub-record has the following fields:
Field |
Type |
Units |
Description |
paddock |
string |
Name of a paddock |
|
amount |
double |
kg |
Amount of supplementary feed present in the paddock |
roughage |
boolean |
TRUE i.f.f. the feed is a roughage. |
|
dm_content |
double |
kg/kg |
Dry matter content of the feed. |
dmd |
double |
- |
Dry matter digestibility of the feed (not including any portion that passes the gut undamaged). |
me_content |
double |
MJ/kg |
Metabolizable energy content of the feed. |
cp_conc |
double |
kg/kg |
Crude protein content of the feed. |
prot_dg |
double |
kg/kg |
Protein degradability of the feed. |
p_conc |
double |
kg/kg |
Phosphorus content of the feed. |
s_conc |
double |
kg/kg |
Sulphur content of the feed. |
ee_conc |
double |
kg/kg |
Ether-extractable content of the feed. |
adip2cp |
double |
kg/kg |
Proportion of crude protein that is insoluble in acid detergent. |
ash_alk |
double |
mol/kg |
Ash alkalinity of the feed. |
max_passage |
double |
kg/kg |
Maximum proportion of the feed that will pass undamaged through the gut of ruminants. |
DDML definitions
This is for the programmers:
plant2stock
<type>
<field name = "herbage" array="T">
<element>
<field name="dm" unit="kg/ha" kind="double"/>
<field name="dmd" unit="-" kind="double"/>
<field name="cp_conc" unit="kg/kg" kind="double"/>
<field name="p_conc" unit="kg/kg" kind="double"/>
<field name="s_conc" unit="kg/kg" kind="double"/>
<field name="prot_dg" unit="kg/kg" kind="double"/>
<field name="ash_alk" unit="mol/kg" kind="double"/>
<field name="height_ratio" unit="-" kind="double"/>
</element>
</field>
<field name="propn_green" unit="-" kind="double"/>
<field name="legume" unit="-" kind="double"/>
<field name="select_factor" unit="-" kind="double"/>
<field name = "seed" array="T">
<element>
<field name="dm" unit="kg/ha" kind="double"/>
<field name="dmd" unit="-" kind="double"/>
<field name="cp_conc" unit="kg/kg" kind="double"/>
<field name="p_conc" unit="kg/kg" kind="double"/>
<field name="s_conc" unit="kg/kg" kind="double"/>
<field name="prot_dg" unit="kg/kg" kind="double"/>
<field name="ash_alk" unit="mol/kg" kind="double"/>
<field name="height_ratio" unit="-" kind="double"/>
</element>
</field>
<field name = "seed_class" unit="-" kind="integer4" array="T"/>
</type>
supp2stock
<type array="T">
<element>
<field name="paddock" kind="string"/>'
<field name="amount" unit="kg" kind="double"/>'
<field name="roughage" kind="boolean"/>'
<field name="dm_content" unit="kg/kg" kind="double"/>'
<field name="dmd" unit="-" kind="double"/>'
<field name="me_content" unit="MJ/kg" kind="double"/>'
<field name="cp_conc" unit="kg/kg" kind="double"/>'
<field name="prot_dg" unit="kg/kg" kind="double"/>'
<field name="p_conc" unit="kg/kg" kind="double"/>'
<field name="s_conc" unit="kg/kg" kind="double"/>'
<field name="ee_conc" unit="kg/kg" kind="double"/>'
<field name="adip2cp" unit="kg/kg" kind="double"/>'
<field name="ash_alk" unit="mol/kg" kind="double"/>'
<field name="max_passage" unit="kg/kg" kind="double"/>';
</element>
</type>