An error occurred while loading the file. Please try again.
-
guillaume.garbay authored
No commit message
46583a8d
package pikelake.environment;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
public class Time extends AquaNismsGroupProcess<Pike,PikesGroup> {
public static long yearOfBegin = 2012 ;
protected final static Time simulationTimeInstance = new Time();
public static enum PhaseJour {AUBE, JOUR, CREP, NUIT};
public static enum Season {PRINTEMPS, ETE, AUTOMNE, HIVER};
public static enum Mois {JANVIER, FEVRIER, MARS, AVRIL, MAI, JUIN, JUILLET, AOUT, SEPTEMBRE, OCTOBRE, NOVEMBRE, DECEMBRE};
public static int mois = 0, jour = 0, jourMois = 1, saison = 0, annee = 0, phaseJour = 0, heure = 0;
@Override
public void doProcess (PikesGroup group) {
long nbrIter = group.getPilot().getCurrentTime();
// Pas de temps Horaire
heure = (int) nbrIter % 24;
jour = (int) Math.ceil(nbrIter / 24.);
if (jour>365) {
annee = annee + 1;
jour = jour - 365;
}
// Calcul du mois
if (jour <= 31) mois = 0; // Janv
else if (jour <= 59) mois = 1; // Fev
else if (jour <= 90) mois = 2; // Mars
else if (jour <= 120) mois = 3;// Avril
else if (jour <= 151) mois = 4; // Mai
else if (jour <= 181) mois = 5; // Juin
else if (jour <= 212) mois = 6; // Juillet
else if (jour <= 243) mois = 7; // Aout
else if (jour <= 273) mois = 8; // Sept
else if (jour <= 304) mois = 9; // Oct
else if (jour <= 334) mois = 10; // Nov
else if (jour <= 365) mois = 11; // Dec
else mois = 0;
calculSaison();
calculPhaseJour();
if (heure == 0)
jourMois = jourMois + 1;
// RAZ jourMois
if ((mois == 0 | mois == 2 | mois == 4 | mois == 6 | mois == 7 | mois == 9 | mois == 11) & jourMois == 32) jourMois = 1;
else if ((mois == 3 | mois == 5 | mois == 8 | mois == 10) & jourMois == 31) jourMois = 1;
else if (mois == 1 & jourMois == 29) jourMois = 1;
//System.out.println(yearOfBegin + " " + Season.values()[saison] + " " + Mois.values()[mois] + " " + jour + " " + jourMois + " " + heure + " " + PhaseJour.values()[phaseJour]);
}
public void calculSaison () {
if (mois == 2 & jour >= 20) saison = 0;
else if (mois == 5 & jour >= 20) saison = 1;
else if (mois == 8 & jour >= 22) saison = 2;
else if (mois == 11 & jour >= 21) saison = 3;
}
public void calculPhaseJour () {
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
String temp[] = null, dateCompleteLever[] = null, dateCompleteCoucher[] = null;
int jourLever = 0, moisLever = 0, heureLever = 0, heureCoucher = 0;
@SuppressWarnings("unused")
int minLever = 0, minCoucher = 0;
// Lecture fichier contenant les hoiraires de lever et de coucher du soleil
String filePath = "data/input/leshorairesdusoleil.csv";
Scanner scanner;
try {
scanner = new Scanner(new File(filePath));
// On boucle sur chaque ligne detecte
String line = scanner.nextLine();
while (scanner.hasNextLine()) {
line = scanner.nextLine();
temp = line.split(";");
// Dtermination heure de lever du soleil
dateCompleteLever = temp[0].split("[/: ]+");
dateCompleteCoucher = temp[1].split("[/: ]+");
// Calcul date
jourLever = Integer.parseInt(dateCompleteLever[0]);
moisLever = Integer.parseInt(dateCompleteLever[1]);
// Lever du soleil
heureLever = Integer.parseInt(dateCompleteLever[3]);
minLever = Integer.parseInt(dateCompleteLever[4]);
// Coucher du soleil
heureCoucher = Integer.parseInt(dateCompleteCoucher[3]);
minCoucher = Integer.parseInt(dateCompleteCoucher[4]);
// Calcul de la phase de la journee
if (jourMois == jourLever & mois == (moisLever-1)) {
if (heure > heureLever-2 & heure < heureLever+2) phaseJour = 0;
else if (heure > heureLever+1 & heure < heureCoucher-1) phaseJour = 1;
else if (heure > heureCoucher-2 & heure < heureCoucher+2) phaseJour = 2;
else phaseJour = 3;
break;
}
}
scanner.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static String getPhaseJour () {
return PhaseJour.values()[phaseJour].toString();
}
public static String getMois () {
return Mois.values()[mois].toString();
}
public static String getSeason(){
return Season.values()[saison].toString();
}
/*public static long getYear(){
return yearOfBegin;
}
public static long getNbYearFromBegin(long time){
return (long) Math.floor(time / Season.values().length);
}
public static double getSeasonDuration(){
return 1./ Season.values().length;
}
public static Time getInstance(){
141142143144
return simulationTimeInstance;
}*/
}