Forked from reversaal / OhmPi
Source project has a limited visibility.
Time.java 3.99 KiB
package pikelake.environment;
import pikelake.pikes.Pike;
import pikelake.pikes.PikesGroup;
import pikelake.environment.HoraireLeverCoucher;
import fr.cemagref.simaqualife.kernel.processes.AquaNismsGroupProcess;
/**
 *		Classe de la gestion du temps de la simulation
 *		@author Guillaume GARBAY
 *		@version 1.0
public class Time extends AquaNismsGroupProcess<Pike,PikesGroup> {
		// Variables representant la date de la simulation
		public static enum Season {PRINTEMPS, ETE, AUTOMNE, HIVER};
		public static enum Mois {MoisZero, JANVIER, FEVRIER, MARS, AVRIL, MAI, JUIN, JUILLET, AOUT, SEPTEMBRE, OCTOBRE, NOVEMBRE, DECEMBRE};
		public static int mois = 1, jour = 0, jourMois = 1, saison = 0, annee = 2012, phaseJour = 0, heure = 0;
		public static String PhaseJour;
		public static long nbrIter = 0;
		/**
		 *		Determine la date de la simulation en fonction du nombre de pas de la simulation
		 *		Calcule l'heure, le jour, la phase du jour, le mois, la saison et l'année
		 *		!! 1 <= jour <= 365	;	1 <= jourMois <= 30,31 !!
		 *		@param group L'ensemble des individus
		 *		@return /
		@Override
		public void doProcess (PikesGroup group) {
			// Nombre de pas de la simulation
			nbrIter = group.getPilot().getCurrentTime();
			// Pas de temps Horaire
			heure = (int) nbrIter % 24;	
			jour = (int) Math.ceil((nbrIter+1) / 24.);
			// RAZ du nombre de jour par an si l'annee est finie
			if (jour>365) {
				annee = annee + 1;
				jour = jour - 365;
			// Détermination du jour dans le mois
			if (heure == 0)
				jourMois = jourMois + 1;
			// RAZ jourMois
			if ((mois == 1 | mois == 3 | mois == 5 | mois == 7 | mois == 8 | mois == 10 | mois == 12) & jourMois == 32)	jourMois = 1;
			else if ((mois == 4 | mois == 6 | mois == 9 | mois == 11) & jourMois == 31)									jourMois = 1;
			else if  (mois == 2 & jourMois == 29)																		jourMois = 1;
			// Calcul du mois, de la saison et de la phase du jour
			calculMois();
			calculSaison();
			PhaseJour = HoraireLeverCoucher.phaseJournee[jourMois][mois][heure];
			// Affichage de la date complete a chaque pas de temps
			//System.out.println(annee + "	" + Season.values()[saison] + "	" + Mois.values()[mois] + "	" + jour + "	" + jourMois + "	" + heure + "	" + PhaseJour);
		/**
		 *		Détermine le mois en fonction du jour par an
		 *		@param / 
		 *		@return /
		public void calculMois () {
			if		(jour <= 31)	mois = 1; // Janv
7172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
else if (jour <= 59) mois = 2; // Fev else if (jour <= 90) mois = 3; // Mars else if (jour <= 120) mois = 4;// Avril else if (jour <= 151) mois = 5; // Mai else if (jour <= 181) mois = 6; // Juin else if (jour <= 212) mois = 7; // Juillet else if (jour <= 243) mois = 8; // Aout else if (jour <= 273) mois = 9; // Sept else if (jour <= 304) mois = 10; // Oct else if (jour <= 334) mois = 11; // Nov else if (jour <= 365) mois = 12; // Dec else mois = 0; } /** * Détermine la saison en fonction du mois et du jour par mois * @param / * @return / */ public void calculSaison () { if (mois == 1) saison = 3; if (mois == 3 & jourMois >= 20) saison = 0; else if (mois == 6 & jourMois >= 20) saison = 1; else if (mois == 9 & jourMois >= 22) saison = 2; else if (mois == 12 & jourMois >= 21) saison = 3; } /** * Retourne la phase du jour * @param / * @return PhaseJour Chaine de caractère contenant la phase du jour */ public static String getPhaseJour () { return PhaseJour; } /** * Retourne le mois * @param / * @return Mois[i] Chaine de caractère contenant le mois */ public static String getMois () { return Mois.values()[mois].toString(); } /** * Retourne la saison * @param / * @return Season[i] Chaine de caractère contenant la saison */ public static String getSeason() { return Season.values()[saison].toString(); } }