Fonction de simulation d'un ou plusieurs pas de temps avec conditions limites.
[erreur]=MASCARET_compute_BC(id,TpsInitial, TpsFinal, PasTps, TpsCl, Cl1, Cl2, impression)
Argument de sortie indiquant la présence d'erreur si différent de zero
Identifiant de l'instance Mascaret retourné par MASCARET_create
Temps initial du calcul
Temps final du calcul
Pas de temps interne du calcul
Le vecteur temps commun à toutes les nouvelles conditions limites, dimensionné comme le nombre de lignes de Cl1 et Cl2.
Composante 1 de la condition limite, c'est une matrice décrivant l'évolution des nouvelles conditions limites
Cette matrice est dimensionnée en ligne comme le vecteur TpsCl et en colonne par le nombre condition limite
Suivant le type de la condition limite, on a : Type 1 ou 3 --> débit ; Type 2 --> cote ; Type 7 --> cote inf
Composante 2 de la condition limite, c'est une matrice décrivant l'évolution des nouvelles conditions limites
Cette matrice est dimensionnée en ligne comme le vecteur TpsCl et en colonne par le nombre condition limite (comme Cl1)
Suivant le type de la condition limite, on a : Type 1 ou 2 --> pas utilisé ; Type 3 --> cote ; Type 7 --> cote sup
Impression (écriture) sur les fichiers listing (1-> Vrai 0-> Faux)
Fonction qui permet d'effectuer une simulation d'un ou plusieurs pas de temps en spécifiant de nouvelles conditions limites. C'est notamment cette fonction qui va calculer un nouvel état courant à partir du modèle courant et de l'état précédent
Une autre fonction de l'API permet également de faire la même chose avec des paramètres différents, il s'agit de MASCARET_compute
Avant d'utiliser cette fonction, il est nécessaire d'avoir initialiser l'état Mascaret, c'est à dire d'avoir fait appel à une des fonctions MASCARET_initStateName, MASCARET_initState ou MASCARET_importXml avec le dernier paramètre à 0.
toolbox_dir=getenv("toolbox_dir"); c = filesep(); // creation of the MASCARET model [err, id] = MASCARET_create(); assert_checktrue(id>0); // read data from files path_xml = "file://"+toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1.xcas"; TabNomFichier = [strsubst(path_xml,'\','/'), .. toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1.geo", .. toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1_0.loi", .. toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1_1.loi", .. toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1.lis", .. toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1.opt"]; TypeNomFichier = ["xcas","geo","loi","loi","listing","res"]; impression = 0; err = MASCARET_importModel(id,TabNomFichier,TypeNomFichier,impression); assert_checkequal(err,0); // get Boundary Conditions info [err,pasTpsCalcul]=MASCARET_getDouble(id,"Model.DT",0,0,0); assert_checkequal(err,0); [err,nbCl]=MASCARET_getNbBoundCond(id); assert_checkequal(err,0); for i = 1:nbCl [err,nomCL,numLoi]=MASCARET_getNameBndCond(id,i); assert_checkequal(err,0); printf("Name of the Boundary Condition # %d is : %s corresponding to the graph # %d\n", i, nomCL, numLoi); end // initialisation err = MASCARET_initStateName(id,toolbox_dir+c+"demos"+c+"Help"+c+"demo1"+c+"demo1.lig",impression); assert_checkequal(err,0); // computation tailleTpsCL = 3; cl2 = zeros(tailleTpsCL,nbCl); // not used cl1 = zeros(tailleTpsCL,nbCl); cl1(:,2) = 2.; tpsCalcul0 = 0.0; deltaT = 600.0; tpsCalcul1 = deltaT; tpsCl = (tpsCalcul0:deltaT/2:tpsCalcul1).'; cl1(:,1) = 150./3600.* tpsCl; err = MASCARET_compute_BC(id,tpsCalcul0, tpsCalcul1, pasTpsCalcul, tpsCl, cl1, cl2, impression); assert_checkequal(err,0); // model deletion err = MASCARET_delete(id); assert_checkequal(err,0); | ![]() | ![]() |