Modello ecologico movimento animali in funzione del sole

di il
1 risposte

Modello ecologico movimento animali in funzione del sole

Ciao a tutti,
sto cercando di modellizzare in maniera molto semplice il movimento di un cetriolo di mare (Holothuria arguinensis) da un substrato di alghe alla sabbia. La bestiola si muove solo durante la notte mentre durante il giorno preferisce restare al riparo dal sole tra le alghe.

Volevo quindi esprimere il movimento dell'animale in funzione della presenza/assenza di luce durante le 24 ore.

Vi chiedo un aiuto perchè sono ad un punto morto! Allego lo script che fin ora ho fatto e che definisce la dimensione spaziale dell'area considerata e delimita le condizione limite.

Spero di avere prestissimo qualche risposta!! Grazie a tuttti

%start modelling the seacucumber movements from segrasses to sandy bottom
%according to light

clear all
close all

%%%%%%%%%

%PARAMETERS OF THE SYSTEM
tmax=10
dt=0.1;
dz=0.2;
zmax=50;
%DIMENSION OF THE SYSTEM
%space vector i have told the matlab that i want a vector to define the
%space of muy area therefore each cell would be of 0.2 and 50as max
%dimension
Z=[0:dz:zmax];

%SEACUCUMBER POPULATION
%define the population as moltiplication of vector Z+0.1 that is the population inside each cell
Xpop=Z*0+0.1;

% remeber to keep the same size and to know what is thze size of my vector
% i will define ll
ll=length(Z);

%LIGHT GRADIENT
%define light i want that it goes from 1 to 0 but should have the same
%dimension of Z and seagrasses
Lss=0; %on seagrasses
h=0.001;
Ls=1; %on sand
Lfn=[1:-1/ll:1/ll];

%SEAGRASSES WITH LIGHT
%define seagrass with light saying that the vector is from contrituted by 1
%and then 50 zeros that correspond to the seagrass area and then again 1.
Seagrasses=ones(1,ll);
Seagrasses(end-100:end-50)=0;

Light=Lfn.*Seagrasses

%SEACUCUMBER INFO
%define speed of X (m*h-1)
sp=0.99; % speed


%to store the information
Xstock=[];

%starting of the loop
for i=0:dt:tmax;

moveup=Xpop*sp/dz;
movedown=Xpop*sp/dz;
%limits conditions
moveup(1)=0;
movedown(end)=0; %closed both end

%what are the gains?
movedowngain=[0 movedown(1:end-1)];
moveupgain=[moveup(2:end) 0];

dX=-moveup-movedown+moveupgain+movedowngain;
Xpop=Xpop+dX*dt;
Xstock=[Xstock; i Xpop];
end

break

%LIGHT FORCING
%light remember that Lfn=[1:-1/ll:1/ll];
Emax=1; %light on sand
Eopt=0;
I=find(Light>Eopt);% light is greater than Eopt=stays on seagrass
%Move=Light>Eopt;
moveup(I)=0;
movedown(I)=1;

for 0:12
Light=1

for 12:24
Light=0

if L=1


if L=0




%define
secucumbmovelightmin=1 %forced movement when light is strong

if secucumbmovelightmin=1
x=(Light(1:end-1)<Lightmin)

I=find(x==0.1)%light less than Lightmim= I=I(1:end-1);
moveup(I)=1;
movedown(I)=0;

1 Risposte

Devi accedere o registrarti per scrivere nel forum
1 risposte