Salut dans un plan de simulation, je veux changer une équation en modifiant uniquement la première ligne. string eq_death_rate_deb ="double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");" string eq_death_rate_new =""+ eq_death_rate_deb +"if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0;" pop.setNaturalDeathRate(eq_death_rate_new); Y a t-il une manière plus efficace de le faire ? Ca m'arrangerait car j'ai une autre équation qui est beaucoup plus longue.... Et si non, comment faire que les passage à la ligne entre " " soit bien interprétés ? Merci Bon apres-midi Stéphanie -- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/ Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Hello Eric va surement te faire ca plus elegamment, mais je bricolerais qqch comme ca : String oldEq = pop.getNaturalDeathRate().getContent(); String[] oldEqSplits = oldEq.split("null"); String newEq = eq_death_rate_deb + "if (group == null"+ oldEqSplits [1]; faut verifier qu'il n'y a pas "null" ailleurs... et petite subtilité sur setNaturalDeathRate(equation) qui prend une equation comme argument. donc plutot : pop.getNaturalDeathRate().setContent(newEq); Le 20/02/2024 à 14:59, Stephanie MAHEVAS a écrit :
Salut
dans un plan de simulation, je veux changer une équation en modifiant uniquement la première ligne.
string eq_death_rate_deb ="double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");" string eq_death_rate_new =""+ eq_death_rate_deb +"if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0;" pop.setNaturalDeathRate(eq_death_rate_new);
Y a t-il une manière plus efficace de le faire ? Ca m'arrangerait car j'ai une autre équation qui est beaucoup plus longue....
Et si non, comment faire que les passage à la ligne entre " " soit bien interprétés ?
Merci
Bon apres-midi
Stéphanie
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/
Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33
o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org https://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users Archives et moteur de recherche:http://list.isis-fish.org/pipermail/isis-fish-users/
-- Sigrid LEHUTA ~ ><> ~ Fisheries modeller IFREMER unit HALGO, Ecology and modeling for fisheries science lab (EMH) Member of the Mixed Research Unit DECOD: Dynamics and sustainability of ecosystems: from source to sea Member of l'Association Française d'Halieutique IFREMER, Centre Atlantique Rue de l'Ile d'Yeu - BP 21105 44311 Nantes Cedex 03, France Tél : 02 40 37 42 38 (N° interne : 8238) https://halgo.ifremer.fr/en https://www.umr-decod.fr/en https://www.association-francaise-halieutique.fr/
Super efficace ! Merci ! Je teste... Bises Le 20/02/2024 à 15:37, Sigrid LEHUTA a écrit :
Hello
Eric va surement te faire ca plus elegamment, mais je bricolerais qqch comme ca :
String oldEq = pop.getNaturalDeathRate().getContent(); String[] oldEqSplits = oldEq.split("null"); String newEq = eq_death_rate_deb + "if (group == null"+ oldEqSplits [1];
faut verifier qu'il n'y a pas "null" ailleurs... et petite subtilité sur setNaturalDeathRate(equation) qui prend une equation comme argument. donc plutot : pop.getNaturalDeathRate().setContent(newEq);
Le 20/02/2024 à 14:59, Stephanie MAHEVAS a écrit :
Salut
dans un plan de simulation, je veux changer une équation en modifiant uniquement la première ligne.
string eq_death_rate_deb ="double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");" string eq_death_rate_new =""+ eq_death_rate_deb +"if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0;" pop.setNaturalDeathRate(eq_death_rate_new);
Y a t-il une manière plus efficace de le faire ? Ca m'arrangerait car j'ai une autre équation qui est beaucoup plus longue....
Et si non, comment faire que les passage à la ligne entre " " soit bien interprétés ?
Merci
Bon apres-midi
Stéphanie
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/
Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33
o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org https://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users Archives et moteur de recherche:http://list.isis-fish.org/pipermail/isis-fish-users/
-- Sigrid LEHUTA ~ ><> ~ Fisheries modeller IFREMER unit HALGO, Ecology and modeling for fisheries science lab (EMH) Member of the Mixed Research Unit DECOD: Dynamics and sustainability of ecosystems: from source to sea Member of l'Association Française d'Halieutique
IFREMER, Centre Atlantique Rue de l'Ile d'Yeu - BP 21105 44311 Nantes Cedex 03, France Tél : 02 40 37 42 38 (N° interne : 8238)
https://halgo.ifremer.fr/en https://www.umr-decod.fr/en https://www.association-francaise-halieutique.fr/
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org https://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users Archives et moteur de recherche:http://list.isis-fish.org/pipermail/isis-fish-users/
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/ Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Pour remplacer la première ligne, on peut faire : eq_death_rate = eq_death_rate.replaceFirst(".*\n", "double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");\n"); Pour les retours à la ligne, il faut écrire "\n" et chaque ligne doit se terminer par ". Sinon, à partir de IsisFish 4.4.8.0, on a accès à une nouvelle synthaxe Java: """ (3 fois le carateres "): Tout ce qui est entre """ et """ est une chaine de caratère (exemple : https://www.baeldung.com/java-text-blocks ) Ce code est valide par exemple: String eq_death_rate = """ if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0; """ Le 20/02/2024 à 14:59, Stephanie MAHEVAS a écrit :
Salut
dans un plan de simulation, je veux changer une équation en modifiant uniquement la première ligne.
string eq_death_rate_deb ="double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");" string eq_death_rate_new =""+ eq_death_rate_deb +"if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0;" pop.setNaturalDeathRate(eq_death_rate_new);
Y a t-il une manière plus efficace de le faire ? Ca m'arrangerait car j'ai une autre équation qui est beaucoup plus longue....
Et si non, comment faire que les passage à la ligne entre " " soit bien interprétés ?
Merci
Bon apres-midi
Stéphanie
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/
Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33
o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org https://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users Archives et moteur de recherche: http://list.isis-fish.org/pipermail/isis-fish-users/
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
eh be encore plus efficace ! Merci ! et top pour les """ Le 20/02/2024 à 16:10, Eric Chatellier a écrit :
Pour remplacer la première ligne, on peut faire :
eq_death_rate = eq_death_rate.replaceFirst(".*\n", "double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");\n");
Pour les retours à la ligne, il faut écrire "\n" et chaque ligne doit se terminer par ".
Sinon, à partir de IsisFish 4.4.8.0, on a accès à une nouvelle synthaxe Java: """ (3 fois le carateres "): Tout ce qui est entre """ et """ est une chaine de caratère (exemple : https://www.baeldung.com/java-text-blocks )
Ce code est valide par exemple:
String eq_death_rate = """
if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0;
"""
Le 20/02/2024 à 14:59, Stephanie MAHEVAS a écrit :
Salut
dans un plan de simulation, je veux changer une équation en modifiant uniquement la première ligne.
string eq_death_rate_deb ="double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");" string eq_death_rate_new =""+ eq_death_rate_deb +"if (group == null) return Ktemp*0.0; else if (group.getId() == 0) return Ktemp*0.0; else if (group.getId() == 1) return Ktemp*0.25; else if (group.getId() == 2) return Ktemp*0.2; else if (group.getId() ==3)return Ktemp*0.2; else if (group.getId() ==4)return Ktemp*0.2; else if (group.getId() ==5)return Ktemp*0.2; else if (group.getId() ==6)return Ktemp*0.2; else if (group.getId() ==7)return Ktemp*0.2; else if (group.getId() ==8)return Ktemp*0.2; else if (group.getId() ==9)return Ktemp*0.2; else return 0;" pop.setNaturalDeathRate(eq_death_rate_new);
Y a t-il une manière plus efficace de le faire ? Ca m'arrangerait car j'ai une autre équation qui est beaucoup plus longue....
Et si non, comment faire que les passage à la ligne entre " " soit bien interprétés ?
Merci
Bon apres-midi
Stéphanie
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/
Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33
o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org https://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users Archives et moteur de recherche: http://list.isis-fish.org/pipermail/isis-fish-users/
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/ Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
donc ce code devrait fonctionner ? Stringeq_death_rate_deb=pop.getNaturalDeathRate().getContent(); eq_death_rate=eq_death_rate.replaceFirst(".*\n","double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");\n"); pop.getNaturalDeathRate().setContent(eq_death_rate); Le 20/02/2024 à 16:10, Eric Chatellier a écrit :
eq_death_rate = eq_death_rate.replaceFirst(".*\n", "double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");\n");
-- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/ Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33 o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
Oui, Au detail pres que la variable a deux noms différent : "eq_death_rate_deb" et "eq_death_rate" Le 20/02/2024 à 16:24, Stephanie MAHEVAS a écrit :
donc ce code devrait fonctionner ?
Stringeq_death_rate_deb=pop.getNaturalDeathRate().getContent(); eq_death_rate=eq_death_rate.replaceFirst(".*\n","double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");\n"); pop.getNaturalDeathRate().setContent(eq_death_rate); Le 20/02/2024 à 16:10, Eric Chatellier a écrit :
eq_death_rate = eq_death_rate.replaceFirst(".*\n", "double Ktemp=context.getValueAndCompute(\"nephrops.naturalDeathRate.Ktemp\","+mor+");\n"); -- ...................................................................... Stephanie MAHEVAS UMR MARBEC - site de Sète IFREMER/HM https://annuaire.ifremer.fr/cv/16343/
Tel: (33) 04 99 57 32 39 (8239) - 06 75 83 59 33
o \ o / _ o __| \ / |__ o _ \ o / o /|\ | /\ ___\o \o | o/ o/__ /\ | /|\ / \ / \ | \ /) | ( \ /o\ / ) | (\ / | / \ / \ ......................................................................
_______________________________________________ Isis-fish-users mailing list Isis-fish-users@list.isis-fish.org https://list.isis-fish.org/cgi-bin/mailman/listinfo/isis-fish-users Archives et moteur de recherche: http://list.isis-fish.org/pipermail/isis-fish-users/
-- Éric Chatellier - www.codelutin.com - 02.40.50.29.28
participants (3)
-
Eric Chatellier -
Sigrid LEHUTA -
Stephanie MAHEVAS