; Script-file -- Nickel DEB-IBM Daphnia magna ; Author: Karel Vlaeminck (karel.vlaeminck@ugent.be ; Adaptation of the extended script from Karel Viaene & Andreas Focks ; Adapted from original script-file by Ben Martin (btmarti25@gmail.com) and Elke Zimmer ; Implementation of the standard DEB equations in an IBM ; ========================================================================================================================================= ; ========================== DEFINITION OF PARAMETERS AND STATE VARIABLES ================================================================= ; ========================================================================================================================================= ; - - - - - - - - - - - - - - - - Global parameters: are accessible for patches and turtles - - - - - - - - - - - - - - - - - - - - - - - - globals[ L_0 ; cm, initial structural volume day volume ; Embryo related parameters for calc-embryo-reserve-investment embryo-timestep e_scaled_embryo e_ref S_C_embryo U_H_embryo dU_E_embryo dU_H_embryo dL_embryo ; Parameters used to calculate the costs for an egg / initial reserves lower-bound ; lower boundary for shooting method upper-bound ; upper boundary for shooting method sim ; this keeps track of how many times the calc-egg-size loop is r ; General parameters for processes T_arrh ; arrhenius temperature for species T_Fact ; arrhenius factor temperature ; temperature input ; #, food input iter_N ; number of iterations during multiple runs loc_metal ; list of metal concentrations during multiple runs cum_repro ; cummulative reproduction (biomass production) age_1strepro ; age of first reproduction ; General global parameters id ; this is used to create a unique id for each simulation species_clear_name ; global variable, gives the clear (latin) name of the simulated species meanDispersal ; global constant, gives the average step size per day starv_fraction ; fraction of the maximum length attained that an individual can shrink to before dying ; DEB parameters v_rate_int ; cm / d, energy conductance kap_int ; -, allocation fraction to soma (structural growth + structural maintenance) kap_R_int ; -, reproduction efficiency k_J_rate_int ; d-1, maturity maintenance rate coefficient U_H^b_int ; scaled maturity at birth U_H^p_int ; scaled maturity at puberty U_H^j_int ; scaled maturity at transformation k_M_rate_int ; specific somatic maintenance rate g_int ; energy investment ration time-between-molts ; d, time between molting events ; Ageing related parameters sG ; -, Gompertz stress coefficient h_a ; d-2, Weibull aging acceleration ; Embryo related parameters egg_weight ; J, estimated energy of an embryo L_embryo ; cm, estimated intial length of an embryo U_E_embryo ; J, estimat initial energy of an embryo ; Feeding related parameters J_XAm_rate_int ; # / L² t1, maximum surface area specific ingestion rate K ; half saturation food density ; Nickel stress factors stress ; the parameter s used in the various PMoA stress effects f_stress ; stress on the feeding factor f g_stress ; stress on the parameter g k_M_stress1 ; stress on the maintenance rate > maintenance costs increase k_M_stress2 ; stress on the maintenance rate > growth cost increase k_J_stress ; stress on k_J_rate repro_stress1 ; stress on the cost for reproduction repro_stress2 ; stress on survival of embryos ] ; - - - - - - - - - - - - - - - - Parameters for the environment: are accessible for patches - - - - - - - - - - - - - - - - - - - - - - - - patches-own[ p_food ; # / cm^2, prey density p_d_food ; change of food density in time p_feedingpotential ; potential feeding by the available grazers p_actualfeeding ; actual feeding taking into account the phyto density p_counts ; amount of bugs at this patch p_slice_n ; used in communication with JAVA for the spatial distribution of patches p_area ; used in communication with JAVA for the spatial distribution of patches p_depth ] ; - - - - - - - - - - - - - - - - Parameters for the individuals: are accessible for turtles - - - - - - - - - - - - - - - - - - - - - - - - turtles-own[ ; State variables t_L ; cm, structural length t_dL ; change of structural length in time t_U_H ; t L^2, scaled maturity t_dU_H ; change of scaled maturity in time t_U_E ; t L^2, scaled reserves t_dU_E ; change of scaled reserves in time t_e_scaled ; scaled reserves per unit of structure t_U_R ; t L^2, scaled energy in reproduction buffer (not standard DEB) t_dU_R ; change of energy in reproduction buffer (reproduction rate) ; Fluxes t_S_A ; assimilation flux t_S_C ; mobilisation flux ; Standard DEB parameters t_g ; - , energy investment ratio t_v_rate ; cm /t , energy conductance (velocity) t_kap ; - , allocation fraction to soma t_kap_R ; - , reproduction efficiency t_k_M_rate ; 1/t, somatic maintenance rate coefficient t_k_J_rate ; 1/t, maturity maintenance rate coefficient t_U_H^b ; t L^2, scaled maturity at birth t_U_H^p ; t L^2, scaled maturity at puberty t_scatter-multiplier ; parameter that is used to randomize the input parameters ; Prey dynamics t_J_XAm_rate ; # / (cm^2 t), surface-area-specific maximum ingestion rate t_K ; individual half saturation coefficient t_functresp ; - , scaled functional response ; Ageing t_q_acceleration ; - , ageing acceleration t_dq_acceleration ; change of ageing acceleration in time t_h_rate ; - , hazard rate t_dh_rate ; change of hazard rate in time ; Animal specific parameters t_molt-time ; time after a reproduction event (delay parameter before new reproduction event) t_die? ; if 1, the individual will die t_juvenile ; if 1, the individual has reached puberty t_adult ; if 1, the individual is an adult t_offspring-number ; number of offsprings t_broods-number ; number of broods t_develop-time ; development time, time after hatching ] ; ========================================================================================================================================= ; ============================================ SETUP PROCEDURE: SETTING INITIAL CONDITIONS ================================================ ; ========================================================================================================================================= ; - - - - - - - - - - - - - - - - - - - - - - - - - - Setup button - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to SETUP __clear-all-and-reset-ticks set id random-float 3 set L_0 0.00001 ; set initial length to some very small value (embryo start off as nearly all reserves) ; Determine treatment parameters set food-level "2.5 mg C per L" set input 114.5 ; Joules if temperature-level = "15 °C" [ set temperature 15 + 273 ] if temperature-level = "20 °C" [ set temperature 20 + 273 ] if temperature-level = "25 °C" [ set temperature 25 + 273 ] ; Setup global parameters init_globals food-corr calc-embryo-reserve-investment T_corrections ; Setup turtles and patches ask patches [ set p_food 0 ; set initial value of prey to input ] ask patches [ sprout initial_number_bugs ] ask turtles [ individual-variability ] ; first their individual variability in the parameter is set, then the initial energy is calculated for each nickel_toxicity write_Data_output end ; - - - - - - - - - - - - - - - - - - - - - - - Initialize global parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to init_globals set species_clear_name "Daphnia magna" set volume 50 ; Add-my-pet DEB parameters for Daphnia magna set v_rate_int 0.1584 ; cm / d, energy conductance set kap_int 0.61 ; -, allocation fraction to soma (structural growth + structural maintenance) set kap_R_int 0.95 ; -, reproduction efficiency set k_J_rate_int 0.0002 ; d-1, maturity maintenance rate coefficient let p_Am 315.611 ; J / d cm2, maximum surface specific assimilation rate let F_m 6.5 ; L / d cm2, maximum surface specific searching rate let p_M 1453 ; J / d cm2, volume specific somatic maintenance rate let E_G 4400 ; J / cm3, specific costs for structure let E_Hb 0.01379 ; J, maturity at birth let E_Hp 0.3211 ; J, maturity at puberty ; DEB-IBM compound parameters set k_M_rate_int p_M / E_G ; specific somatic maintenance rate set g_int E_G * v_rate_int / ( kap_int * p_Am ) ; -, energy investment ratio set U_H^b_int E_Hb / p_Am ; -, scaled maturity at birth set U_H^p_int E_Hp / p_Am ; -, scaled maturity at puberty ; Ageing parameters set sG -0.3 ; -, Gompertz stress coefficient set h_a 0.0003105 ; d-2, Weibull aging acceleration ; Embryo parameters if temperature-level = "15 °C" [ set egg_weight 2.92301E-04 set L_embryo 0.021431055 set U_E_embryo 4.91423E-05 ] if temperature-level = "20 °C" [ set egg_weight 2.29836E-04 set L_embryo 0.019751247 set U_E_embryo 4.09422E-05 ] if temperature-level = "25 °C" [ set egg_weight 3.47614E-04 set L_embryo 0.022715860 set U_E_embryo 5.63726E-05 ] ; Prey dynamics parameters set K ( p_Am / 0.9 ) / F_m ; J / L, half stauration constants set J_XAm_rate_int p_Am / 0.9 ; J / d cm², maximum surface specific ingestion rate ; Daphnia magna specific parameters if temperature-level = "15 °C" [ set time-between-molts 4.3 ] ; d, time between reproduction if temperature-level = "20 °C" [ set time-between-molts 2.8 ] if temperature-level = "25 °C" [ set time-between-molts 2.4 ] set T_arrh 6400 ; K, Arrhenius temperature end ; - - - - - - - - - - - - - - - - - - - Correction for food through the food factor - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Assimilation rates are corrected to food-corr if temperature-level = "15 °C" [ set assim_cor 0.7897034 set K_cor 0.8210971 ] if temperature-level = "20 °C" [ set assim_cor 0.8413258 set K_cor 1.484617 ] if temperature-level = "25 °C" [ set assim_cor 0.7600384 set K_cor 1.231995 ] set k_M_rate_int (k_M_rate_int / assim_cor) set g_int (g_int / assim_cor) set U_H^b_int (U_H^b_int / assim_cor) set U_H^p_int ( U_H^p_int / assim_cor) set v_rate_int (v_rate_int / assim_cor) set kap_int (kap_int / assim_cor) set kap_R_int (kap_R_int / assim_cor) set K_J_rate_int (K_J_rate_int / assim_cor) set J_XAm_rate_int (J_XAm_rate_int * assim_cor) set K (K * K_cor) end ; ========================================================================================================================================= ; =============================================== GO PROCEDURE: RUNNING THE MODEL ========================================================= ; ========================================================================================================================================= ; The go statement below is the order in which all procedures are run each timestep to GO ifelse (ticks / timestep <= stopsim or stopsim = 0) ; as long as the provided end time is not exceeded, simulations continue [ T_corrections if day = 7 [ set food-level "5 mg C per L" set input input * 2 ] ask patches [ calc-dU_E ] ask turtles with [t_juvenile = 1] ; all individuals calculate the change in their state variables based on the current conditions [ calc-dU_H calc-dU_R calc-dL calc-dq_acceleration calc-dh_rate ] density-dependent-mortality ask turtles [ update-individuals ] ; the the state variables of the individuals updated based on the delta value update-environment ; the the state variables of the environment are updated based on the delta value if Die? [ death? ] ask turtles with [t_adult = 1] ; mature individuals check if they have enough energy to reproduce [ set t_molt-time t_molt-time + ((T_fact * 1) / timestep) ; taking into account time between reproduction if t_molt-time > time-between-molts and Reproduce? [ lay-eggs ] ] tick if (plotting) [ do-plots ] ; then the plots are updated set day ticks / timestep write_Data_output if count turtles = 0 [stop] ] [ stop ] end ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - The MC button - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; The MC statement runs the model for multiple iterations, determin by N_iterations to MC let i 0 if RecordData [ set-current-directory pathName if file-exists? OutputFilename [ user-message ("Output file already present, please delete or select another output file" )] write-Heading ] while [i < N_iterations] [ set i i + 1 print i SETUP set iter_N i let j 0 while [ j < stopsim * timestep ] [ set j j + 1 GO ] ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Food correction calibration algorithm - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Algorithm to determine the food correction to STRESS_ASSES let i 0 if RecordData [ set-current-directory pathName if file-exists? OutputFilename [ user-message ("Output file already present, please delete or select another output file" )] write-Heading ] while [i < N_iterations] [ set i (i + 1) print i ; Randomize the parameters to be calibrated set A_eq random-float 50 set B_eq random-float 1 let temp ( list "15 °C" "20 °C" "25 °C" ) let treatcounter 0 while [ treatcounter < 1 ] [ set temperature-level item treatcounter temp set treatcounter treatcounter + 1 let metalcounter 0 while [ metalcounter < 7 ] [ ; Concentrations per treatment > use measured dissolved nickel concentrations if temperature-level = "15 °C" [ set loc_metal (list 0 4.2 10.9 26.01 55.41 126.43 193.77 ) ] if temperature-level = "20 °C" [ set loc_metal (list 0 3.33 8.88 23.2 54.2 126 193 ) ] if temperature-level = "25 °C" [ set loc_metal (list 0 3.59 9.15 25.8 57.7 149 184 ) ] set metal-conc ( item metalcounter loc_metal ) set metalcounter metalcounter + 1 SETUP set iter_N i let j 0 while [ j < stopsim * timestep ] [ set j j + 1 GO ] ] ] ] end ; ========================================================================================================================================= ; ================================================= INITIAL ENERGY ======================================================================== ; ========================================================================================================================================= ; Calculate the initial energy of the first individuals using a bisection method to calc-embryo-reserve-investment set embryo-timestep timestep * 1000 set lower-bound 0 set upper-bound 1 set sim 0 loop [ set sim sim + 1 set egg_weight .5 * (lower-bound + upper-bound) set L_embryo L_0 set U_E_embryo egg_weight set U_H_embryo 0 set e_scaled_embryo v_rate_int * (U_E_embryo / L_embryo ^ 3) set e_ref 1 while [U_H_embryo < U_H^b_int and e_scaled_embryo > 1 ] [ set e_scaled_embryo v_rate_int * (U_E_embryo / L_embryo ^ 3) set S_C_embryo L_embryo ^ 2 * (g_int * e_scaled_embryo / (g_int + e_scaled_embryo)) * (1 + (L_embryo / (g_int * (v_rate_int / ( g_int * k_M_rate_int))))) set dU_E_embryo ( -1 * S_C_embryo ) set dU_H_embryo ((1 - kap_int) * S_C_embryo - k_J_rate_int * U_H_embryo ) set dL_embryo ((1 / 3) * (((V_rate_int /( g_int * L_embryo ^ 2 )) * S_C_embryo) - k_M_rate_int * L_embryo )) set U_E_embryo U_E_embryo + dU_E_embryo / (embryo-timestep ) set U_H_embryo U_H_embryo + dU_H_embryo / (embryo-timestep ) set L_embryo L_embryo + dL_embryo / (embryo-timestep ) set e_scaled_embryo v_rate_int * (U_E_embryo / L_embryo ^ 3) ] if e_scaled_embryo < (.01 + e_ref) and e_scaled_embryo > (-.01 + e_ref) and U_H_embryo >= U_H^b_int [ stop ] ifelse U_H_embryo > U_H^b_int [ set upper-bound egg_weight ] [ set lower-bound egg_weight ] if sim > 100 [ user-message ("Embryo submodel did not converge. Timestep may need to be smaller." ) stop ;if the timestep is too big relative to the speed of growth of species this will no converge ] ] end ; ========================================================================================================================================= ; ========================================================== SUBMODELS ==================================================================== ; ========================================================================================================================================= ; - - - - - - - - - - - - - - - - - - - - - - - - Individual variability - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to individual-variability ; Individuals vary in their DEB paramters on a normal distribution with a mean on the input paramater and a coefficent of variation equal to the cv ; Set cv to 0 for no variation set t_scatter-multiplier e ^ (random-normal 0 cv) set t_g g_int / t_scatter-multiplier set t_U_H^b U_H^b_int / t_scatter-multiplier set t_U_H^p U_H^p_int / t_scatter-multiplier set t_v_rate v_rate_int set t_kap kap_int set t_kap_R kap_R_int set t_k_M_rate k_M_rate_int set t_k_J_rate k_J_rate_int set t_K K * t_scatter-multiplier set t_J_XAm_rate J_XAm_rate_int * t_scatter-multiplier ; Energetics set t_adult 0 set t_juvenile 1 set t_die? 0 set t_offspring-number 0 set t_L L_embryo * t_scatter-multiplier set t_U_E U_E_embryo * t_scatter-multiplier set t_U_R 0 set t_dU_R 0 set t_U_H t_U_H^b set t_dU_H 0 set t_h_rate 0 set t_dh_rate 0 set t_q_acceleration 0 set t_dq_acceleration 0 end ; - - - - - - - - - - - - - - - - - - - - - - - - Temperature effects - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; The effect of the temperature is incorporated through the Arrhenius equations ; The different rates are corrected with a temperature correction factor T_fact to T_corrections if temperature-level = "15 °C" [ set temperature 15 + 273 ] if temperature-level = "20 °C" [ set temperature 20 + 273 ] if temperature-level = "25 °C" [ set temperature 25 + 273 ] set T_fact exp (T_arrh / 293 - T_arrh / temperature) end ; - - - - - - - - - - - - - - - - - - - - - - - - Copper toxicity effects - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to nickel_toxicity set f_stress 0 set g_stress 0 set k_M_stress1 0 set k_M_stress2 0 set k_J_stress 0 set repro_stress1 0 set repro_stress2 0 if metal-present? [ set stress ( metal-conc - A_eq ) * B_eq if stress < 0 [ set stress 0 ] ; Effect on selected Physiological Mode of Action (PMoA) if PMoA = "Maintenance" [ set k_J_stress stress set k_M_stress1 stress ] if PMoA = "Maintenance structural" [ set k_M_stress1 stress ] if PMoA = "Maintenance maturity" [ set k_J_stress stress ] if PMoA = "Assimilation" [ set f_stress stress ] if PMoA = "Growth" [ set g_stress stress set k_M_stress2 stress ] if PMoA = "Reproduction" [ set repro_stress1 stress ] if PMoA = "Embryonic hazard" [ set repro_stress2 stress ] ; Effects ask turtles [ set t_k_J_rate t_k_J_rate * (1 + k_J_stress) set t_g t_g * (1 + g_stress) set t_k_M_rate t_k_M_rate * (1 + k_M_stress1) / (1 + k_M_stress2) set t_kap_R t_kap_R / (1 + repro_stress1) * exp (-1 * repro_stress2) ] ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Reserve dynamics - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Change in reserves: determined by the difference between assimilation (S_A) and mobilization (S_C) fluxes ; When food-dynamics are constant f = the value of f_scaled set in the user interface ; If food is set to "logistic" f depends on prey density and the half-saturation coefficient (K) ; For embryos f = 0 because they do not feed exogenously to calc-dU_E ; Change in energy reserves ; Calculate the functional response, taking into account the amount of available food (avoids that individuals in a patch eat more than availabe) ask turtles-here with [t_juvenile = 1] [ set t_functresp (p_food / (p_food + t_K) ) if PMoA = "Assimilation" [ set t_functresp t_functresp / (1 + f_stress) ] set t_S_A t_functresp * t_L ^ 2 set t_e_scaled (T_fact * t_v_rate) * (t_U_E / t_L ^ 3) set t_S_C t_L ^ 2 * (t_g * t_e_scaled / (t_g + t_e_scaled)) * (1 + (t_L / (t_g * ((T_fact * t_v_rate) / (t_g * (T_fact * t_K_M_rate) ))))) set t_dU_E (t_S_A - t_S_C) ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Maturity and Reproduction - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; Change in maturity is calculated (for immature individuals only) to calc-dU_H ifelse t_U_H < (t_U_H^p / T_Fact) ; they only invest into maturity until they reach puberty [set t_dU_H ((1 - t_kap) * t_S_C - (T_Fact * t_k_J_rate) * t_U_H) ] [set t_dU_H 0] end ; Change in reprobuffer (mature individuals only) to calc-dU_R if t_U_H >= (t_U_H^p / T_Fact) [set t_dU_R ((1 - t_kap) * t_S_C - (T_Fact * t_k_J_rate) * (t_U_H^p / T_Fact)) ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Dynamics of structural length - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; The following procedure calculates change in structural length, if growth is negative the individual does not have enough energy to pay somatic maintenance and the starvation submodel is run ; Where growth is set to 0 and individuals divirt enough energy from development (for juveniles) or reprodution (for adults) to pay maintenance costs to calc-dL set t_dL ((1 / 3) * (((T_Fact * t_v_rate /( t_g * t_L ^ 2 )) * t_S_C) - (T_Fact * t_K_M_rate) * t_L)) if t_dL <= 0 ; If growth is negative use starvation strategy 3 from the DEB book t_e_scaled < t_L / ((T_Fact * t_v_rate) / ( t_g * (1 + g_stress) * (T_Fact * t_K_M_rate))) t_dL <=0 ; Structural maintenance is dominant over maturity maintenance [ set t_dL 0 ; No structural growth ifelse t_U_H < (t_U_H^p / T_Fact) [ set t_dU_H t_dU_H - t_kap * t_L ^ 2 * ( t_L / ((T_fact * t_v_rate) / (t_g * (T_fact * t_K_M_rate))) - t_e_scaled)] ; Juveniles will divert energy from maturity to pay maintenance costs [ set t_dU_R t_dU_R - t_kap * t_L ^ 2 * ( t_L / ((T_fact * t_v_rate) / (t_g * (T_fact * t_K_M_rate))) - t_e_scaled)] ; Adults will divert energy for reproduction to pay maintenance costs set t_dU_E t_S_A - t_e_scaled * t_L ^ 2 ; The mobilized energy flux S_C is simplified > the change is energy reserves is recalculated ifelse t_U_H < (t_U_H^p / T_Fact) [ if t_dU_H < 0 [ set t_die? 1 ] ] [ if t_dU_R < 0 [ set t_die? 1 ] ] ; The individual cannot pay maintenance costs, even though it diverts energy from maturity/reproduction ; Maintenance costs always have to be paid, otherwise the individual dies ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Lay eggs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ;The following procedure is run for mature individuals which have enough energy to reproduce ;They create new offsprings and give it the following state variables and DEB parameters to lay-eggs set t_offspring-number floor ((t_U_R * t_kap_R) / (egg_weight / T_fact)) if t_offspring-number > 0 [ set t_molt-time 0 set t_broods-number t_broods-number + 1 set t_U_R t_U_R - ((floor ((t_U_R ) / (egg_weight / T_fact))) * (egg_weight / T_fact)) set cum_repro cum_repro + ( sum [ t_offspring-number ] of turtles-here ) ; Calculate cumulative reproduction, number of produced and hatched eggs ] ; hatch t_offspring-number ; [ ; set t_adult 0 ; set t_juvenile 0 ; set t_die? 0 ; set t_offspring-number 0 ; set t_L 0 ; set t_U_E 0 ; set t_U_H 0 ; set t_U_R 0 ; set t_dU_R 0 ; set t_h_rate 0 ; set t_dh_rate 0 ; set t_q_acceleration 0 ; set t_dq_acceleration 0 ; set t_S_A 0 ; set t_S_C 0 ; set t_dL 0 ; set t_develop-time floor ( sim * timestep * T_Fact - 1 ) ; ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Ageing - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ; The following procedure calculates the change in damage enducing compounds of an individual to calc-dq_acceleration set t_dq_acceleration (t_q_acceleration * (t_L ^ 3 / ((T_Fact * t_v_rate) / (t_g * (T_Fact * t_k_M_rate ))) ^ 3) * sG + H_a) * t_e_scaled * ((T_Fact * t_v_rate / t_L) - ((3 / t_L)* t_dL)) - ((3 / t_L ) * t_dL) * t_q_acceleration end ; The following procedure calculates the change in damage in the individual to calc-dh_rate set t_dh_rate t_q_acceleration - ((3 / t_L) * t_dL) * t_h_rate end ; - - - - - - - - - - - - - - - - - - - - - - - - Update invdividuals - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to update-individuals set t_U_E t_U_E + t_dU_E / timestep set t_U_H t_U_H + t_dU_H / timestep set t_U_R t_U_R + t_dU_R / timestep if (t_U_R < 0) [ set t_U_R 0 ] set t_L t_L + t_dL / timestep if (t_U_H >= (t_U_H^b / T_Fact)) [ set t_q_acceleration t_q_acceleration + t_dq_acceleration / timestep set t_h_rate t_h_rate + t_dh_rate / timestep ] if (t_juvenile = 0) [ set t_develop-time t_develop-time - (1 * T_fact) if (t_develop-time <= 0) [ individual-variability ] ] end to death? ask turtles [ if (t_h_rate > 1) [ set t_h_rate 1 ] ; This was added to avoid non-numbers being produced (see next line) if random-float 1 < ( 1 - (1 - t_h_rate) ^ ( 1 / timestep)) [ set t_die? 1 ] ] ask turtles with [t_die? = 1] [ die ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Update environment - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to update-environment ask turtles [ if t_U_H >= (t_U_H^b / T_Fact) [set t_juvenile 1] if t_U_H >= (t_U_H^p / T_Fact) [set t_adult 1] ] set day (ticks / timestep) ask patches [ let d_food 0 - sum [ t_S_A * (T_fact * J_XAm_rate_int ) ] of turtles-here / ( volume / 1000 ) set p_food p_food + ( d_food / timestep ) if day mod 7 = 1 or day mod 7 = 3 or day mod 7 = 5 ; new medium on Mon, Wed, Fri so remove any left over food (started exp on a Sunday) [ set p_food 0 ask turtle 0 [ ask other turtles with [ t_juvenile = 1 ] [ die ] ] ] if day mod 1 = 0 ; every day new food is given [ set p_food p_food + input ] if p_food < 0 [ set p_food 0 ] ] if cum_repro = 0 [ set age_1strepro day + 1 ; Keep age of first reproduction ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Denstiy dependent mortality - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to density-dependent-mortality if dd-mortality = "e-juvenile-only" [ if any? turtles with [t_juvenile = 1 and t_adult = 0] [ ask turtles with [t_juvenile = 1 and t_adult = 0 ] [ if random-float 1 < ( 1 - t_e_scaled ) * ( 1 - (1 - mortality-constant) ^ ( 1 / timestep)) [ set t_die? 1 ] ] ] ] if dd-mortality = "e-adult-only" [ if any? turtles with [t_adult = 1] [ ask turtles with [t_adult = 1 ] [ if random-float 1 < ( 1 - t_e_scaled ) * ( 1 - (1 - mortality-constant) ^ ( 1 / timestep)) [ set t_die? 1 ] ] ] ] if dd-mortality = "e-all" [ if any? turtles with [t_juvenile = 1] [ ask turtles with [t_juvenile = 1 ] [ if random-float 1 < ( 1 - t_e_scaled ) * ( 1 - (1 - mortality-constant) ^ ( 1 / timestep)) [ set t_die? 1 ] ] ] ] end ; ========================================================================================================================================= ; =============================================================== PlOT ==================================================================== ; ========================================================================================================================================= to set-patch-vals [number phy cpw] ; print (word "bugs " number " " phy " " cpw) ask patches with [p_slice_n = number] [ set p_food phy ] end to do-plots set-current-plot "population density" set-plot-pen-interval 1 / timestep plot count turtles with [t_juvenile = 1] set-current-plot "food density" set-plot-pen-interval 1 / timestep plot mean [p_food] of patches set-current-plot "age structure" set-current-plot-pen "embryo" set-plot-pen-interval 1 / timestep ifelse any? turtles with [t_juvenile = 0] [plot count turtles with [t_juvenile = 0]] [plot 0] set-current-plot-pen "juveniles" set-plot-pen-interval 1 / timestep ifelse any? turtles with [t_juvenile = 1 and t_adult = 0] [plot count turtles with [t_juvenile = 1 and t_adult = 0]] [plot 0] set-current-plot-pen "adults" set-plot-pen-interval 1 / timestep ifelse any? turtles with [t_adult = 1] [plot count turtles with [t_adult = 1]] [plot 0] set-current-plot "cummulative reproduction" set-plot-pen-interval 1 / timestep plot cum_repro set-current-plot "size distribution adults" set-current-plot-pen "default" histogram [t_L / shape_factor * 10] of turtles with [t_adult = 1] ; shape_factor = 0.4272 for Lymnaea (Zimmer, 2014) (*10 to get [mm] in stead of [cm]) set-current-plot "size distribution juveniles" set-current-plot-pen "default" histogram [t_L / shape_factor * 10] of turtles with [t_adult = 0 and t_juvenile = 1] set-current-plot "size distribution population" set-current-plot-pen "default" histogram [t_L / shape_factor * 10] of turtles with [t_juvenile = 1] end ; ========================================================================================================================================= ; ==================================================== OTHER FUNCTIONS ==================================================================== ; ========================================================================================================================================= ; - - - - - - - - - - - - - - - - - - - - - - - - Read txt-files - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to-report read-in-matrix [filename ] let loc-mat [] carefully [ file-open filename set loc-mat file-read file-close ] [ print (word "There was a problem with importing file " filename) user-message (word "There was a problem with importing file " filename) report [] ] report loc-mat end ; - - - - - - - - - - - - - - - - - - - - - - - - Write data to txt-file - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to write_Data_output if (RecordData and ticks mod (timestep) = 0) [ set-current-directory pathName file-open OutputFilename file-write iter_N file-write day file-write mean [p_food] of patches ; food density [J] file-write count turtles with [t_juvenile = 1 ] ; we do not include the eggs file-write count turtles with [t_juvenile = 0] ; print out embryos file-write count turtles with [t_juvenile = 1 and t_adult = 0] ; print out juveniles file-write count turtles with [t_adult = 1] ; print out adults let size_adult 0 ifelse count turtles with [t_adult = 1] > 0 [ set size_adult mean [t_L / shape_factor * 10] of turtles with [t_adult = 1 ] file-write size_adult ] [ file-write 0 ] ; mean size adults [mm] let size_juv 0 ifelse count turtles with [t_juvenile = 1 and t_adult = 0 ] > 0 [ set size_juv mean [t_L / shape_factor * 10] of turtles with [t_juvenile = 1 and t_adult = 0 ] file-write size_juv ] [ file-write 0 ] ; mean size juveniles [mm] let size_pop 0 ifelse count turtles with [t_juvenile = 1] > 0 [ set size_pop mean [t_L / shape_factor * 10] of turtles with [t_juvenile = 1] file-write size_pop ] [ file-write 0] file-write cum_repro ; cumulative reproduction [#eggs] file-write age_1strepro ; age of first reproduction ifelse count turtles with [t_adult = 1] > 0 [ file-write mean [ t_broods-number ] of turtles with [ t_adult = 1 ] ] [ file-write 0 ] file-write assim_cor file-write K_cor file-write temperature - 273 file-write metal-conc file-write A_eq file-write B_eq file-print "" file-close ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Write heading (names) of data to txt-file - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to write-Heading if RecordData [ set-current-directory pathName file-open OutputFilename file-write "Iteration" file-write "Day" file-write "FoodDensity" file-write "CountIndividuals" file-write "CountEmbryo" file-write "CountJuvenile" file-write "CountAdult" file-write "MeanLengthAdults" file-write "MeanLengthJuveniles" file-write "PopulationLength" file-write "Cumulativeoffspring" file-write "Age_1stReproduction" file-write "Broods_number" file-write "Assim_cor" file-write "K_cor" file-write "Temperature" file-write "Nickel" file-write "A_eq" file-write "B_eq" file-print "" file-close ] end ; - - - - - - - - - - - - - - - - - - - - - - - - Logistic dose response function - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - to-report logistic-dose-response [H LC50 x] ; determines the survival chance using a log-logistic curve with given slope, LC50 and exposure concentration ifelse (x > 0) [ report 1 / (1 + (exp (- H * (ln x - ln LC50 )))) ; log-logistic formula ] [ report 0 ] end @#$#@#$#@ GRAPHICS-WINDOW 1408 597 1653 793 0 0 165.0 1 10 1 1 1 0 1 1 1 0 0 0 0 1 1 1 ticks 30.0 BUTTON 32 10 117 43 setup SETUP NIL 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 32 43 117 76 go GO T 1 T OBSERVER NIL NIL NIL NIL 1 BUTTON 32 76 117 109 go-once GO NIL 1 T OBSERVER NIL NIL NIL NIL 1 INPUTBOX 438 10 489 70 timestep 24 1 0 Number INPUTBOX 492 10 543 70 stopsim 43 1 0 Number MONITOR 134 10 197 55 #turtles count turtles 17 1 11 MONITOR 200 10 263 55 days day 17 1 11 INPUTBOX 545 10 681 70 N_iterations 10000 1 0 Number BUTTON 32 109 117 142 NIL MC NIL 1 T OBSERVER NIL NIL NIL NIL 1 SWITCH 722 10 850 43 RecordData RecordData 0 1 -1000 INPUTBOX 722 43 1037 103 OutputFileName ./Output/effect_growth_hockey2.txt 1 0 String INPUTBOX 722 103 1037 163 pathName . 1 0 String TEXTBOX 1437 33 1547 51 Intraspecific variation 11 0.0 1 INPUTBOX 1447 51 1524 111 cv 0 1 0 Number TEXTBOX 1431 208 1581 226 Treatment controllers 11 0.0 1 SWITCH 31 184 136 217 plotting plotting 1 1 -1000 PLOT 138 184 810 545 population density NIL NIL 0.0 10.0 0.0 10.0 true false "" "" PENS "default" 1.0 0 -16777216 true "" "" SWITCH 1083 30 1203 63 Movement? Movement? 1 1 -1000 INPUTBOX 31 218 136 278 shape_factor 0.264 1 0 Number PLOT 813 386 1350 545 food density NIL NIL 0.0 10.0 0.0 1.1 true false "" "" PENS "food_density" 1.0 0 -16777216 true "" "" PLOT 813 184 1350 383 age structure NIL NIL 0.0 300.0 0.0 10.0 true true "" "" PENS "adults" 1.0 0 -13791810 true "" "" "juveniles" 1.0 0 -11085214 true "" "" "embryo" 1.0 0 -2674135 true "" "" PLOT 466 548 810 797 size distribution adults NIL NIL 0.0 4.0 0.0 10.0 true false "" "" PENS "default" 0.25 1 -16777216 true "" "" PLOT 138 548 463 797 size distribution juveniles NIL NIL 0.0 1.5 0.0 10.0 true false "" "" PENS "default" 0.1 1 -16777216 true "" "" PLOT 813 548 1087 797 size distribution population NIL NIL 0.0 4.0 0.0 10.0 true false "" "" PENS "default" 0.25 1 -16777216 true "" "" PLOT 1090 548 1350 797 cummulative reproduction NIL NIL 0.0 10.0 0.0 10.0 true false "" "" PENS "default" 1.0 0 -16777216 true "" "" MONITOR 134 58 403 103 Species species_clear_name 17 1 11 CHOOSER 1258 36 1371 81 dd-mortality dd-mortality "e-juvenile-only" "e-adult-only" "e-all" "off" 3 INPUTBOX 1258 81 1371 141 mortality-constant 0.1 1 0 Number TEXTBOX 1247 17 1397 35 Density dependent mortality 11 0.0 1 SWITCH 1083 63 1203 96 Die? Die? 1 1 -1000 BUTTON 1427 387 1548 420 stress-asses STRESS_ASSES NIL 1 T OBSERVER NIL NIL NIL NIL 1 TEXTBOX 1432 368 1563 396 Nickel effect calibration 11 0.0 1 MONITOR 266 10 336 55 NIL temperature 17 1 11 MONITOR 339 10 402 55 iteration iter_N 17 1 11 TEXTBOX 1096 10 1196 28 Process controllers 11 0.0 1 CHOOSER 1412 227 1561 272 temperature-level temperature-level "15 °C" "20 °C" "25 °C" 0 SLIDER 438 72 681 105 initial_number_bugs initial_number_bugs 1 25 1 1 1 NIL HORIZONTAL CHOOSER 1412 272 1561 317 food-level food-level "2.5 mg C per L" "5 mg C per L" 1 SWITCH 1083 96 1203 129 Reproduce? Reproduce? 0 1 -1000 INPUTBOX 1594 50 1669 110 assim_cor 0.7897034 1 0 Number INPUTBOX 1668 50 1743 110 K_cor 0.8210971 1 0 Number INPUTBOX 1621 261 1760 321 metal-conc 193.77 1 0 Number CHOOSER 1427 420 1548 465 PMoA PMoA "Assimilation" "Reproduction" "Growth" "Maintenance" "Embryonic survival" "Maintenance structural" "Maintenance maturity" 2 SWITCH 1621 228 1760 261 metal-present? metal-present? 0 1 -1000 INPUTBOX 1427 465 1488 525 A_eq 64.22493064350564 1 0 Number INPUTBOX 1487 465 1548 525 B_eq 0.43168558075903174 1 0 Number TEXTBOX 1618 31 1768 49 Correction factors 11 0.0 1 TEXTBOX 1650 209 1800 227 Nickel exposure 11 0.0 1 @#$#@#$#@ ## WHAT IS IT? (a general understanding of what the model is trying to show or explain) ## HOW IT WORKS (what rules the agents use to create the overall behavior of the model) ## HOW TO USE IT (how to use the model, including a description of each of the items in the Interface tab) ## THINGS TO NOTICE (suggested things for the user to notice while running the model) ## THINGS TO TRY (suggested things for the user to try to do (move sliders, switches, etc.) with the model) ## EXTENDING THE MODEL (suggested things to add or change in the Code tab to make the model more complicated, detailed, accurate, etc.) ## NETLOGO FEATURES (interesting or unusual features of NetLogo that the model uses, particularly in the Code tab; or where workarounds were needed for missing features) ## RELATED MODELS (models in the NetLogo Models Library and elsewhere which are of related interest) ## CREDITS AND REFERENCES (a reference to the model's URL on the web if it has one, as well as any other necessary credits, citations, and links) @#$#@#$#@ default true 0 Polygon -7500403 true true 150 5 40 250 150 205 260 250 airplane true 0 Polygon -7500403 true true 150 0 135 15 120 60 120 105 15 165 15 195 120 180 135 240 105 270 120 285 150 270 180 285 210 270 165 240 180 180 285 195 285 165 180 105 180 60 165 15 arrow true 0 Polygon -7500403 true true 150 0 0 150 105 150 105 293 195 293 195 150 300 150 box false 0 Polygon -7500403 true true 150 285 285 225 285 75 150 135 Polygon -7500403 true true 150 135 15 75 150 15 285 75 Polygon -7500403 true true 15 75 15 225 150 285 150 135 Line -16777216 false 150 285 150 135 Line -16777216 false 150 135 15 75 Line -16777216 false 150 135 285 75 bug true 0 Circle -7500403 true true 96 182 108 Circle -7500403 true true 110 127 80 Circle -7500403 true true 110 75 80 Line -7500403 true 150 100 80 30 Line -7500403 true 150 100 220 30 butterfly true 0 Polygon -7500403 true true 150 165 209 199 225 225 225 255 195 270 165 255 150 240 Polygon -7500403 true true 150 165 89 198 75 225 75 255 105 270 135 255 150 240 Polygon -7500403 true true 139 148 100 105 55 90 25 90 10 105 10 135 25 180 40 195 85 194 139 163 Polygon -7500403 true true 162 150 200 105 245 90 275 90 290 105 290 135 275 180 260 195 215 195 162 165 Polygon -16777216 true false 150 255 135 225 120 150 135 120 150 105 165 120 180 150 165 225 Circle -16777216 true false 135 90 30 Line -16777216 false 150 105 195 60 Line -16777216 false 150 105 105 60 car false 0 Polygon -7500403 true true 300 180 279 164 261 144 240 135 226 132 213 106 203 84 185 63 159 50 135 50 75 60 0 150 0 165 0 225 300 225 300 180 Circle -16777216 true false 180 180 90 Circle -16777216 true false 30 180 90 Polygon -16777216 true false 162 80 132 78 134 135 209 135 194 105 189 96 180 89 Circle -7500403 true true 47 195 58 Circle -7500403 true true 195 195 58 circle false 0 Circle -7500403 true true 0 0 300 circle 2 false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 cow false 0 Polygon -7500403 true true 200 193 197 249 179 249 177 196 166 187 140 189 93 191 78 179 72 211 49 209 48 181 37 149 25 120 25 89 45 72 103 84 179 75 198 76 252 64 272 81 293 103 285 121 255 121 242 118 224 167 Polygon -7500403 true true 73 210 86 251 62 249 48 208 Polygon -7500403 true true 25 114 16 195 9 204 23 213 25 200 39 123 cylinder false 0 Circle -7500403 true true 0 0 300 dot false 0 Circle -7500403 true true 90 90 120 face happy false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 255 90 239 62 213 47 191 67 179 90 203 109 218 150 225 192 218 210 203 227 181 251 194 236 217 212 240 face neutral false 0 Circle -7500403 true true 8 7 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Rectangle -16777216 true false 60 195 240 225 face sad false 0 Circle -7500403 true true 8 8 285 Circle -16777216 true false 60 75 60 Circle -16777216 true false 180 75 60 Polygon -16777216 true false 150 168 90 184 62 210 47 232 67 244 90 220 109 205 150 198 192 205 210 220 227 242 251 229 236 206 212 183 fish false 0 Polygon -1 true false 44 131 21 87 15 86 0 120 15 150 0 180 13 214 20 212 45 166 Polygon -1 true false 135 195 119 235 95 218 76 210 46 204 60 165 Polygon -1 true false 75 45 83 77 71 103 86 114 166 78 135 60 Polygon -7500403 true true 30 136 151 77 226 81 280 119 292 146 292 160 287 170 270 195 195 210 151 212 30 166 Circle -16777216 true false 215 106 30 flag false 0 Rectangle -7500403 true true 60 15 75 300 Polygon -7500403 true true 90 150 270 90 90 30 Line -7500403 true 75 135 90 135 Line -7500403 true 75 45 90 45 flower false 0 Polygon -10899396 true false 135 120 165 165 180 210 180 240 150 300 165 300 195 240 195 195 165 135 Circle -7500403 true true 85 132 38 Circle -7500403 true true 130 147 38 Circle -7500403 true true 192 85 38 Circle -7500403 true true 85 40 38 Circle -7500403 true true 177 40 38 Circle -7500403 true true 177 132 38 Circle -7500403 true true 70 85 38 Circle -7500403 true true 130 25 38 Circle -7500403 true true 96 51 108 Circle -16777216 true false 113 68 74 Polygon -10899396 true false 189 233 219 188 249 173 279 188 234 218 Polygon -10899396 true false 180 255 150 210 105 210 75 240 135 240 house false 0 Rectangle -7500403 true true 45 120 255 285 Rectangle -16777216 true false 120 210 180 285 Polygon -7500403 true true 15 120 150 15 285 120 Line -16777216 false 30 120 270 120 leaf false 0 Polygon -7500403 true true 150 210 135 195 120 210 60 210 30 195 60 180 60 165 15 135 30 120 15 105 40 104 45 90 60 90 90 105 105 120 120 120 105 60 120 60 135 30 150 15 165 30 180 60 195 60 180 120 195 120 210 105 240 90 255 90 263 104 285 105 270 120 285 135 240 165 240 180 270 195 240 210 180 210 165 195 Polygon -7500403 true true 135 195 135 240 120 255 105 255 105 285 135 285 165 240 165 195 line true 0 Line -7500403 true 150 0 150 300 line half true 0 Line -7500403 true 150 0 150 150 pentagon false 0 Polygon -7500403 true true 150 15 15 120 60 285 240 285 285 120 person false 0 Circle -7500403 true true 110 5 80 Polygon -7500403 true true 105 90 120 195 90 285 105 300 135 300 150 225 165 300 195 300 210 285 180 195 195 90 Rectangle -7500403 true true 127 79 172 94 Polygon -7500403 true true 195 90 240 150 225 180 165 105 Polygon -7500403 true true 105 90 60 150 75 180 135 105 plant false 0 Rectangle -7500403 true true 135 90 165 300 Polygon -7500403 true true 135 255 90 210 45 195 75 255 135 285 Polygon -7500403 true true 165 255 210 210 255 195 225 255 165 285 Polygon -7500403 true true 135 180 90 135 45 120 75 180 135 210 Polygon -7500403 true true 165 180 165 210 225 180 255 120 210 135 Polygon -7500403 true true 135 105 90 60 45 45 75 105 135 135 Polygon -7500403 true true 165 105 165 135 225 105 255 45 210 60 Polygon -7500403 true true 135 90 120 45 150 15 180 45 165 90 sheep false 15 Circle -1 true true 203 65 88 Circle -1 true true 70 65 162 Circle -1 true true 150 105 120 Polygon -7500403 true false 218 120 240 165 255 165 278 120 Circle -7500403 true false 214 72 67 Rectangle -1 true true 164 223 179 298 Polygon -1 true true 45 285 30 285 30 240 15 195 45 210 Circle -1 true true 3 83 150 Rectangle -1 true true 65 221 80 296 Polygon -1 true true 195 285 210 285 210 240 240 210 195 210 Polygon -7500403 true false 276 85 285 105 302 99 294 83 Polygon -7500403 true false 219 85 210 105 193 99 201 83 square false 0 Rectangle -7500403 true true 30 30 270 270 square 2 false 0 Rectangle -7500403 true true 30 30 270 270 Rectangle -16777216 true false 60 60 240 240 star false 0 Polygon -7500403 true true 151 1 185 108 298 108 207 175 242 282 151 216 59 282 94 175 3 108 116 108 target false 0 Circle -7500403 true true 0 0 300 Circle -16777216 true false 30 30 240 Circle -7500403 true true 60 60 180 Circle -16777216 true false 90 90 120 Circle -7500403 true true 120 120 60 tree false 0 Circle -7500403 true true 118 3 94 Rectangle -6459832 true false 120 195 180 300 Circle -7500403 true true 65 21 108 Circle -7500403 true true 116 41 127 Circle -7500403 true true 45 90 120 Circle -7500403 true true 104 74 152 triangle false 0 Polygon -7500403 true true 150 30 15 255 285 255 triangle 2 false 0 Polygon -7500403 true true 150 30 15 255 285 255 Polygon -16777216 true false 151 99 225 223 75 224 truck false 0 Rectangle -7500403 true true 4 45 195 187 Polygon -7500403 true true 296 193 296 150 259 134 244 104 208 104 207 194 Rectangle -1 true false 195 60 195 105 Polygon -16777216 true false 238 112 252 141 219 141 218 112 Circle -16777216 true false 234 174 42 Rectangle -7500403 true true 181 185 214 194 Circle -16777216 true false 144 174 42 Circle -16777216 true false 24 174 42 Circle -7500403 false true 24 174 42 Circle -7500403 false true 144 174 42 Circle -7500403 false true 234 174 42 turtle true 0 Polygon -10899396 true false 215 204 240 233 246 254 228 266 215 252 193 210 Polygon -10899396 true false 195 90 225 75 245 75 260 89 269 108 261 124 240 105 225 105 210 105 Polygon -10899396 true false 105 90 75 75 55 75 40 89 31 108 39 124 60 105 75 105 90 105 Polygon -10899396 true false 132 85 134 64 107 51 108 17 150 2 192 18 192 52 169 65 172 87 Polygon -10899396 true false 85 204 60 233 54 254 72 266 85 252 107 210 Polygon -7500403 true true 119 75 179 75 209 101 224 135 220 225 175 261 128 261 81 224 74 135 88 99 wheel false 0 Circle -7500403 true true 3 3 294 Circle -16777216 true false 30 30 240 Line -7500403 true 150 285 150 15 Line -7500403 true 15 150 285 150 Circle -7500403 true true 120 120 60 Line -7500403 true 216 40 79 269 Line -7500403 true 40 84 269 221 Line -7500403 true 40 216 269 79 Line -7500403 true 84 40 221 269 wolf false 0 Polygon -16777216 true false 253 133 245 131 245 133 Polygon -7500403 true true 2 194 13 197 30 191 38 193 38 205 20 226 20 257 27 265 38 266 40 260 31 253 31 230 60 206 68 198 75 209 66 228 65 243 82 261 84 268 100 267 103 261 77 239 79 231 100 207 98 196 119 201 143 202 160 195 166 210 172 213 173 238 167 251 160 248 154 265 169 264 178 247 186 240 198 260 200 271 217 271 219 262 207 258 195 230 192 198 210 184 227 164 242 144 259 145 284 151 277 141 293 140 299 134 297 127 273 119 270 105 Polygon -7500403 true true -1 195 14 180 36 166 40 153 53 140 82 131 134 133 159 126 188 115 227 108 236 102 238 98 268 86 269 92 281 87 269 103 269 113 x false 0 Polygon -7500403 true true 270 75 225 30 30 225 75 270 Polygon -7500403 true true 30 75 75 30 270 225 225 270 @#$#@#$#@ NetLogo 5.3.1 @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ @#$#@#$#@ default 0.0 -0.2 0 0.0 1.0 0.0 1 1.0 0.0 0.2 0 0.0 1.0 link direction true 0 Line -7500403 true 150 150 90 180 Line -7500403 true 150 150 210 180 @#$#@#$#@ 0 @#$#@#$#@