view test-data/input/TWIN/farmer-plan_TWIN.txt @ 3:3fe3e1e6a40b draft default tip

"planemo upload for repository https://forgemia.inra.fr/insilicow/insilicow-tool commit b530a8209615f225696abe3e0ba49093ff3dc4ad"
author siwaa
date Mon, 25 Aug 2025 16:37:43 +0000
parents
children
line wrap: on
line source

#################################################################################################################
#                                                                                                               #
#	InSiliCow                                                                                               #
#	Virtual farm specification                                                                              #
#                                                                                                               #
#################################################################################################################

#################################################################################################################
#====== GENERAL SETTINGS                                                                                        #
#################################################################################################################

#______ Include files  
@include farmer-log.txt		# providing log action and trigger
@include farmer-base.txt	# providing basic components

#______ Models: specify models for individual cows
param_general{
	garuns_type   = garuns_olivier
	rpm_type      = rpm_lite
	abortion_type = abortion_olivier	
}

#______ Simulation: provide time range, output database and code name
init{
	begin_date  = $start_date$ 00:00:00
	end_date    = $stop_date$ 23:59:59
 	output_db   = db_events.sqlite
 	output_config = config.txt
 	name        = $sim_id$
}

#______ Log Farm information
link{
  trigger = init
  action = log_db farm_tag $farm_tag$
  action = log_db start_date $start_date$
  action = log_db stop_date $stop_date$
  action = log_db now_date $now_date$
  action = log_db latitude $latitude$
  action = log_db longitude $longitude$
}  

#______ End of simulation
trigger{
  type   = chron
  name   = tr_end_simu
  scheme = $stop_date$ 23:59:58 
}

#______ Past and future
condition{
  type = chron_range
  name = past
  from = $start_date$ 00:00:00
  to   = $now_date$ 00:00:01
}

condition{
  type = chron_range
  name = future
  from = $now_date$ 00:00:00
  to   = $stop_date$ 23:59:59
}

#______ Day one
trigger{
    type   = chron
    name   = day_one_herd
    scheme = $start_date$ 23:59:59
}
trigger{
    type = custom
    name = day_one
}
link{
    trigger = day_one_herd
    action  = broadcast_now day_one
}

#______ Calving tag
link{
    trigger = calving
    condition = calf_sex male
    condition = future
    action = log_db birth_of_male no_tag
}
link{
    trigger = calving
    condition = calf_sex female
    condition = future
    action = log_db birth_of_female no_tag
}

#______ Manage initial dam
state{
  state = INITIAL-DAM
}

link{
    trigger = day_one
    action = state_add INITIAL-DAM
}
link{
    trigger = parturition
    condition = is_in INITIAL-DAM
    condition = not is_in IN_WILD
    action = trigger_later tr_delete_cow 1
}
trigger{
  type     = custom
  name     = tr_delete_cow
}
link{
  trigger = tr_delete_cow
  action  = delete_cow remove_initial_dam
}

#______ Stoechio
stoechio{

}

#################################################################################################################
#====== FARMING 												#
#################################################################################################################

#______ Keep cows and calves in farm: no natural mating

link{
  trigger    = enter IN_WILD
  action     = state_move IN_WILD IN_FARM
}

link{
  trigger    = enter WILD_COW
  action     = state_move WILD_COW DRY_COW
}

#______ Remove calf from dam: no natural weaning

link{
  trigger    = enter SUCKLING_CALF
  action     = state_move SUCKLING_CALF NURSED_CALF
}

#______ Milk cows: no natural drying-off at calf weaning

link{
  trigger    = enter NURSING_COW
  action     = state_move NURSING_COW LACTATING_COW
}

#______ Optimal feeding

link{
  trigger    = enter IN_FARM
  action  = trigger_later tr_optimal_feeding 0
}
trigger{
   type = custom
   name = tr_optimal_feeding
}
link{
   trigger = tr_optimal_feeding
   action = change_food optimal
}


#################################################################################################################
#====== FARM COMPONENTS: genotype										#
#################################################################################################################

#______ Genetic_sD: provide Mendelian sampling std dev for transmission of Genetic Scaling Parameters (GSP)
#	GSP_newborn ~ Normal [ (GSP_mother + GSP_father)/2 , GSP_sd ] | within (min, max)

#TWIN CASE : all sd = 0

genetic_sd{
	garuns_olivier.WM{   
	  sd  = 0
	  min = 200
	  max = 800
	}
	
	garuns_olivier.khi_M {
	  sd  = 0
	  min = 0.1 
	  max = 0.6
	}
	
	garuns_olivier.b0{
	  sd  = 0
	  min = 0.80
	  max = 2.40
	}
	
	garuns_olivier.nu_X{
      	  sd  = 0
	  min = 0.2
	  max = 1.8
	}
	
	garuns_olivier.nu_Y{
	  sd  = 0
	  min = 0.2
	  max = 1.8
	}
	
	garuns_olivier.nu_F{
          sd  = 0
	  min = 0.50
	  max = 1.50
	}
	
	garuns_olivier.nu_P{
	  sd  = 0
	  min = 0.50
	  max = 1.50
	}

	garuns_olivier.eD_star{
	  sd  =  0
	  min =  9.0
	  max = 15.0
	}

	garuns_olivier.NDF_star{
	  sd  =  0
	  min =  0.10
	  max =  0.90
	}

	garuns_olivier.psi{
	  sd  =  0
	  min =  0
	  max =  1
	}

	rpm_lite.nu_I{
	  sd  =  0
	  min =  0.00
	  max =  0.20
	}

	rpm_lite.nu_B{
	  sd  =  0
	  min =  1.20
	  max =  2.20
	}

	rpm_lite.nu_Z{
	  sd  =  0
	  min =  0.90
	  max =  1.10
	}
}

#################################################################################################################
#====== FARM COMPONENTS: herd (genotype-based initialization of individual cows)				#
#################################################################################################################

#______ INITIALIZATION of TWIN farm from tables Genotype and Initialization

# From table Genotype: for all <cow_tag> (all lines)
state{
  state = cow_01
  state = cow_02
  state = cow_03
  state = cow_04
  state = cow_05
}

action{
  type = genericlog
  name = log_states_cows

  log_type     = sqlite
  sqlite_path  = db_states.sqlite
  sqlite_table = user_states    

  #log_type    = file
  #file_path   = states-user.txt
  #sep_col     = \t
  #file_line_flush=no

  column{
     value       = time
     name        = time
     sqlite_type = numeric
  }
  column{
     value       = state.count.INITIAL-DAM
     name        = INITIAL-DAM
     sqlite_type = numeric
  }
  column{
     value       = state.count.cow_01
     name        = cow_01
     sqlite_type = numeric
  }
  column{
     value       = state.count.cow_02
     name        = cow_02
     sqlite_type = numeric
  }
  column{
     value       = state.count.cow_03
     name        = cow_03
     sqlite_type = numeric
  }
  column{
     value       = state.count.cow_04
     name        = cow_04
     sqlite_type = numeric
  }
  column{
     value       = state.count.cow_05
     name        = cow_05
     sqlite_type = numeric
  }
}

link{
  trigger = every_day_herd
  action = log_states_cows
}

# From table Genotype: for each <cow_tag> not in table Initialization
init_cow{
    name=cow_03

    abortion_olivier.delta   = constant 3.0
    abortion_olivier.enabled = never
    abortion_olivier.dip =  vector constant 17 ; constant 64 
    abortion_olivier.abo = vector constant 0.02  ;  constant 0.005 ; constant 0.0004

    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
             rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}
init_cow{
    name=cow_04

    abortion_olivier.delta   = constant 3.0
    abortion_olivier.enabled = never
    abortion_olivier.dip =  vector constant 17 ; constant 64 
    abortion_olivier.abo = vector constant 0.02  ;  constant 0.005 ; constant 0.0004

    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}
init_cow{
    name=cow_05

    abortion_olivier.delta   = constant 3.0
    abortion_olivier.enabled = never
    abortion_olivier.dip =  vector constant 17 ; constant 64 
    abortion_olivier.abo = vector constant 0.02  ;  constant 0.005 ; constant 0.0004

    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}

# From table Initialization: for each <dam_tag> (each line)
breed{
  breed = dam_cow_01
  breed = dam_cow_02
}

# From table Initialization: for each <sire_tag> (each line)
init_bull{
    name= sire_cow_01		
    bull.breed_name     = dam_cow_01
    bull.semens_quality = constant 1.0 
    bull.female_ratio   = constant 1.0	   

    #	Genotype sub-block associated with cow_01 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}
init_bull{
    name= sire_cow_02		
    bull.breed_name     = dam_cow_02
    bull.semens_quality = constant 1.0 
    bull.female_ratio   = constant 1.0	   

    #	Genotype sub-block associated with cow_02 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}

# From table Initialization: for each <dam_tag> (each line)
init_cow{
    name=dam_cow_01
    #______ Abortion sub-block   
    abortion_olivier.delta   = constant 3.0
    abortion_olivier.enabled = never
    abortion_olivier.dip =  vector constant 17 ; constant 64 
    abortion_olivier.abo = vector constant 0.02  ;  constant 0.005 ; constant 0.0004

    #	Genotype sub-block associated with cow_01 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}
init_cow{
    name=dam_cow_02
    #______ Abortion sub-block   
    abortion_olivier.delta   = constant 3.0
    abortion_olivier.enabled = never
    abortion_olivier.dip =  vector constant 17 ; constant 64 
    abortion_olivier.abo = vector constant 0.02  ;  constant 0.005 ; constant 0.0004

    #	Genotype sub-block associated with cow_02 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}

# From table Initialization: for each line
# The value of days_after_conception is set such as N = - (birth_date – 280 – start_date)
action{
  type = buy_cow
  name = buy_dam_cow_01
  init_cow  = dam_cow_01
  init_bull = sire_cow_01
  age       = 600
  days_after_conception = -1  
  number   = 1
}
action{
  type = buy_cow
  name = buy_dam_cow_02
  init_cow  = dam_cow_02
  init_bull = sire_cow_02
  age       = 600
  days_after_conception = -30  
  number   = 1
}

# From table Initialization: for all lines
link{
   trigger = init
   action = buy_dam_cow_01
   action = buy_dam_cow_02
}   

# From table Initialization: for each line
link{
  trigger   = calving
  condition = calf_breed dam_cow_01	
  action    = state_add cow_01
  action  = log_db birth_of_female cow_01 birth_from_dam dam_cow_01 birth_from_sire sire_cow_01
}
link{
  trigger   = calving
  condition = calf_breed dam_cow_02	
  action    = state_add cow_02
  action  = log_db birth_of_female cow_02 birth_from_dam dam_cow_02 birth_from_sire sire_cow_02
}

#______ MANAGE BREEDING of TWIN farm from tables Genotype & Insemination

# Define once
init_bull{
    name= no_conception		
    bull.breed_name     = NULL
    bull.semens_quality = constant 0.0 
    bull.female_ratio   = constant 0.5	   
}

# For all lines where conception is not 0
breed{
  breed = NULL			#always this line
  breed = IA_01
  breed = IA_02
  breed = IA_03
  breed = IA_04
}

# From table Insemination: for each line where conception = 1 and calf_sex = 1 (male)
init_bull{
    name= semen_IA_01		
    bull.breed_name     = IA_01
    bull.semens_quality = constant 1.0 
    bull.female_ratio   = constant 0.0	   
}

# From table Insemination: for each line where conception = 1 and calf_sex = 0 (female)
init_bull{
    name= semen_IA_02		
    bull.breed_name     = IA_02
    bull.semens_quality = constant 1.0 
    bull.female_ratio   = constant 1.0	   

    #	Genotype sub-block associated with <calf_tag> = cow_03 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}
init_bull{
    name= semen_IA_03		
    bull.breed_name     = IA_03
    bull.semens_quality = constant 1.0 
    bull.female_ratio   = constant 1.0	   

    #	Genotype sub-block associated with <calf_tag> = cow_05 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}
init_bull{
    name= semen_IA_04		
    bull.breed_name     = IA_04
    bull.semens_quality = constant 1.0 
    bull.female_ratio   = constant 1.0	   

    #	Genotype sub-block associated with <calf_tag> = cow_04 in table Genotype
    garuns_olivier.WM       = constant 450
    garuns_olivier.khi_M    = constant 0.3
    garuns_olivier.b0       = constant 1.6
    garuns_olivier.nu_X     = constant 1
    garuns_olivier.nu_Y     = constant 1.1
    garuns_olivier.nu_F     = constant 1
    garuns_olivier.nu_P     = constant 1
    garuns_olivier.eD_star  = constant 10.7
    garuns_olivier.NDF_star = constant 1
    garuns_olivier.psi      = constant 1
              rpm_lite.nu_B = constant 0.5
              rpm_lite.nu_Z = constant 0.025
              rpm_lite.nu_I = constant 1.7
}

# From table Insemination: for each different <insemination date>

trigger{
  type   = chron
  name   = trigger_insem_19720221
  scheme = 1972-02-21 12:00:00
}
trigger{
  type   = chron
  name   = trigger_insem_19730106
  scheme = 1973-01-06 12:00:00
}
trigger{
  type   = chron
  name   = trigger_insem_19750225
  scheme = 1975-02-25 12:00:00
}
trigger{
  type   = chron
  name   = trigger_insem_19720321
  scheme = 1972-03-21 12:00:00
}
trigger{
  type   = chron
  name   = trigger_insem_19730204
  scheme = 1973-02-04 12:00:00
}
trigger{
  type   = chron
  name   = trigger_insem_19730225
  scheme = 1973-02-25 12:00:00
}

# From table Insemination: for each line

link{
  trigger = trigger_insem_19720221
  action  = insemination_IA_01
}
trigger{
  type = custom
  name = trigger_insem_19720221_cow_01
}
action{
  type = broadcast_now
  name = insemination_IA_01
  condition = is_in cow_01
  trigger   = trigger_insem_19720221_cow_01
}

link{
  trigger = trigger_insem_19730106
  action  = insemination_IA_02
}
trigger{
  type = custom
  name = trigger_insem_19730106_cow_01
}
action{
  type = broadcast_now
  name = insemination_IA_02
  condition = is_in cow_01
  trigger   = trigger_insem_19730106_cow_01
}

link{
  trigger = trigger_insem_19750225
  action  = insemination_IA_03
}
trigger{
  type = custom
  name = trigger_insem_19750225_cow_03
}
action{
  type = broadcast_now
  name = insemination_IA_03
  condition = is_in cow_03
  trigger   = trigger_insem_19750225_cow_03
}

link{
  trigger = trigger_insem_19720321
  action  = insemination_IA_04
}
trigger{
  type = custom
  name = trigger_insem_19720321_cow_02
}
action{
  type = broadcast_now
  name = insemination_IA_04
  condition = is_in cow_02
  trigger   = trigger_insem_19720321_cow_02
}

link{
  trigger = trigger_insem_19730204
  action  = insemination_IA_05
}
trigger{
  type = custom
  name = trigger_insem_19730204_cow_02
}
action{
  type = broadcast_now
  name = insemination_IA_05
  condition = is_in cow_02
  trigger   = trigger_insem_19730204_cow_02
}

link{
  trigger = trigger_insem_19730225
  action  = insemination_IA_06
}
trigger{
  type = custom
  name = trigger_insem_19730225_cow_02
}
action{
  type = broadcast_now
  name = insemination_IA_06
  condition = is_in cow_02
  trigger   = trigger_insem_19730225_cow_02
}

# From table Insemination : for each line WHERE conception = 0
link{
  trigger = trigger_insem_19730204_cow_02
  action    = inseminate no_conception
}

link{
  trigger = trigger_insem_19730225_cow_02
  action    = inseminate no_conception
}

# From table Insemination : for each line WHERE conception = 1 

link{
  trigger = trigger_insem_19720221_cow_01
  action  = force_conception semen_IA_01 
}

link{
  trigger = trigger_insem_19730106_cow_01
  action    = force_conception semen_IA_02 
}

link{
  trigger = trigger_insem_19750225_cow_03
  action    = force_conception semen_IA_03 
}

link{
  trigger = trigger_insem_19720321_cow_02
  action    = force_conception semen_IA_04 
}

# From table Insemination : for each line WHERE conception = 1 AND calf_sex = 0 (female) 

link{
  trigger   = calving
  condition = calf_breed IA_02	
  action    = state_add cow_03
  action  = log_db birth_of_female cow_03 birth_from_dam cow_01 birth_from_sire sire_20
}

link{
  trigger   = calving
  condition = calf_breed IA_03	
  action    = state_add cow_05
  action  = log_db birth_of_female cow_05 birth_from_dam cow_03 birth_from_sire sire_20
}

link{
  trigger   = calving
  condition = calf_breed IA_04	
  action    = state_add cow_04
  action  = log_db birth_of_female cow_04 birth_from_dam cow_02 birth_from_sire sire_20
}

# From table Insemination : for each line WHERE conception = 1 AND calf_sex = 0 (male)

link{
  trigger   = calving
  condition = calf_breed IA_01	
  action  = log_db birth_of_male calf_a birth_from_dam cow_01 birth_from_sire sire_10
}

#______ MANAGE DEATH of TWIN farm from table Death

# From table Death: for each different <death_date>
trigger{
  type   = chron
  name   = trigger_death_19741001
  scheme = 1974-10-01 23:59:59
}

# From table Death: for each different <cow_tag>

link{
  trigger = trigger_death_19741001
  action  = death_cow_01
}
trigger{
  type = custom
  name = trigger_death_19741001_cow_01
}
action{
  type = broadcast_now
  name = death_cow_01
  condition = is_in cow_01
  trigger   = trigger_death_19741001_cow_01
}
link{
  trigger = trigger_death_19741001_cow_01
  #action  = log_db death_of_cow cow_01
  #action    = delete_cow death
  action  = trigger_now om_death
}

#______ MANAGE CULLING of TWIN farm from table Culling

# From table Culling: for each different <culling_date>
trigger{
  type   = chron
  name   = trigger_culling_19731025
  scheme = 1973-10-25 06:00:00
}

# From table Culling: for each different <cow_tag>

link{
  trigger = trigger_culling_19731025
  action  = culling_cow_02
}
trigger{
  type = custom
  name = trigger_culling_19731025_cow_02
}
action{
  type = broadcast_now
  name = culling_cow_02
  condition = is_in cow_02
  trigger   = trigger_culling_19731025_cow_02
}
link{
  trigger = trigger_culling_19731025_cow_02
  #action  = log_db culling_of_cow cow_02
  action  = delete_cow culling cow_02
  action  = log_db delete_cow: for a reason
}


#______ MANAGE DRYING-OFF of TWIN farm from table Drying-off

# From table Drying-off: for each different <drying_off_date>
trigger{
  type   = chron
  name   = trigger_dryingoff_19730923
  scheme = 1973-09-23 14:00:00
}
trigger{
  type   = chron
  name   = trigger_dryingoff_19740809
  scheme = 1974-08-09 14:00:00
}
trigger{
  type   = chron
  name   = trigger_dryingoff_19760927
  scheme = 1976-09-27 14:00:00
}
trigger{
  type   = chron
  name   = trigger_dryingoff_19731022
  scheme = 1973-10-22 14:00:00
}

# From table Drying-off: for each different <cow_tag>
link{
  trigger = trigger_dryingoff_19730923
  action  = dryingoff_cow_01_parity_1
}
trigger{
  type = custom
  name = trigger_dryingoff_19730923_cow_01
}
action{
  type = broadcast_now
  name = dryingoff_cow_01_parity_1
  condition = is_in cow_01
  trigger   = trigger_dryingoff_19730923_cow_01
}
link{
  trigger = trigger_dryingoff_19730923_cow_01
  #action  = log_db dryingoff_of_cow cow_01 dryingoff_in_parity 1  
  action  = stop_milking
  action  = log_db stop_milking: cow_01 in_parity 1  
  
}

link{
  trigger = trigger_dryingoff_19740809
  action  = dryingoff_cow_01_parity_2
}
trigger{
  type = custom
  name = trigger_dryingoff_19740809_cow_01
}
action{
  type = broadcast_now
  name = dryingoff_cow_01_parity_2
  condition = is_in cow_01
  trigger   = trigger_dryingoff_19740809_cow_01
}
link{
  trigger = trigger_dryingoff_19740809_cow_01
  #action  = log_db dryingoff_of_cow cow_01 dryingoff_in_parity 2  
  action  = stop_milking
  action  = log_db stop_milking: cow_01 in_parity 2  
}

link{
  trigger = trigger_dryingoff_19760927
  action  = dryingoff_cow_03_parity_1
}
trigger{
  type = custom
  name = trigger_dryingoff_19760927_cow_03
}
action{
  type = broadcast_now
  name = dryingoff_cow_03_parity_1
  condition = is_in cow_03
  trigger   = trigger_dryingoff_19760927_cow_03
}
link{
  trigger = trigger_dryingoff_19760927_cow_03
  #action  = log_db dryingoff_of_cow cow_03 dryingoff_in_parity 1  
  action  = stop_milking
  action  = log_db stop_milking: cow_03 in_parity 1  
}

link{
  trigger = trigger_dryingoff_19731022
  action  = dryingoff_cow_02_parity_1
}
trigger{
  type = custom
  name = trigger_dryingoff_19731022_cow_02
}
action{
  type = broadcast_now
  name = dryingoff_cow_02_parity_1
  condition = is_in cow_02
  trigger   = trigger_dryingoff_19731022_cow_02
}
link{
  trigger = trigger_dryingoff_19731022_cow_02
  #action  = log_db dryingoff_of_cow cow_02 dryingoff_in_parity 1  
  action  = stop_milking
  action  = log_db stop_milking: cow_02 in_parity 1  
}




#################################################################################################################
#====== FARM COMPONENTS: semen (genotype-based initialization of semen from individual bulls)			#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: heat detection 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: feedstuffs	 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: diets		 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: time schemes	 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: groups		 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: operations	 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: transfers	 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: perturbations	 									#
#################################################################################################################


#################################################################################################################
#====== FARM COMPONENTS: parcels	 									#
#################################################################################################################