• Nenhum resultado encontrado

Principales propriétés de S PARK

Chapitre II Simulation du comportement énergétique des bâtiments basse

2.1.2 Principales propriétés de S PARK

LINK S prod.b "surface du mur" INPUT;

LINK wind h_e.wind "vitesse du vent" INPUT;

Avec ce programme, on peut calculer le flux de chaleur en fonction des autres paramètres. Maintenant, si l’on souhaite calculer la conductivité du matériau en se fixant un flux de chaleur, il suffit de changer les mots clés sur les lignes relatives à ces deux variables. On aurait alors le programme suivant :

DECLARE conv_cond_RP_pt mur; //transfert de chaleur dans le mur DECLARE safprod prod;//pour avoir le flux en W

DECLARE h_ext_pt h_e; //calcul coefficient convection ext LINK flx prod.c "flux de chaleur à travers le mur" INPUT;

LINK d_flx mur.d_flx,prod.a "densité de flux de chaleur à travers le mur";

LINK t_ext mur.t_am "température en amont du mur" INPUT;

LINK t_int mur.t_av "température en aval du mur" INPUT;

LINK rugo h_e.rugo "Qualité de surface" INPUT;

LINK h_ext mur.h_am,h_e.h_ext "Coef convection ext" REPORT;

LINK h_int mur.h_av "Coef convection int" INPUT;

LINK lambda mur.lambda "Conductivité du matériau" REPORT;

LINK e mur.e "épaisseur du mur" INPUT;

LINK S prod.b "surface du mur" INPUT;

LINK wind h_e.wind "vitesse du vent" INPUT;

Seuls les deux mots surlignés ont changé entre les deux programmes.

2 SimSpark : environnement de simulation pour les bâtiments basse consommation 2.1 Spark : le cœur de SimSpark

On définit sur la première ligne le nom du macro-port, dans les lignes suivantes, on décrit, après la virgule, chaque sous-port associé. Comme les ports, les macro-ports sont définis en début des macro-classes. Le macro-port précédent sert en particulier à coupler le modèle de paroi à un modèle de rayonnement pour lequel on a besoin de toutes ces caractéristiques (surface, température de surface, flux par rayonnement).

Ainsi, en conservant le même formalisme dans l’écriture macro-ports des parois, on pourra changer le modèle de paroi simplement en changeant le nom de la paroi qu’on déclare dans le fichier programme qui gère la simulation. On passe donc d’une paroi simple à une paroi à deux couches en changeant uniquement l’écriture suivante :

DECLARE paroi_am_v_RAY_pt i_eo_0_0_0;//paroi amont à l’est

par celle-ci :

DECLARE paroi_am_v_double_RAY_pt i_eo_0_0_0;//paroi amont à l’est

Réduction du temps de calcul

Pour résoudre un système d’équations, SPARK utilise la méthode des graphes.

Cette méthode est connue pour son application au cas du voyageur de commerce qui doit se rendre dans n villes en parcourant le moins de trajet possible. Elle peut s’appliquer d’une façon assez analogue pour trouver le chemin le plus court possible pour aller d’équation en équation par l’intermédiaire des variables jusqu’à avoir décrit tout le système. C’est ce que fait SPARK.

Pour un système d’équations complet, les liaisons ainsi que les variables sont analysées. SPARK détecte premièrement l’ensemble des variables qui peuvent être calculées sans avoir à itérer (ce qu’on ferait à la main pour résoudre un système par substitution), puis il regroupe ces calculs dans un premier composant qu’on appelle composant faible (car il ne nécessite pas d’itération). Il analyse ensuite le reste du graphe en repérant des sous-systèmes d’équations qui nécessitent des itérations (on les appellent composants forts) et d’autres composants faibles. Chaque composant est alors résolu séparément dans un ordre défini.

Cette façon de procéder permet de travailler sur la résolution de plusieurs sous- systèmes d’équations beaucoup plus petits que le système global. De plus, toutes les équations qui sont résolues dans les composants faibles ne nécessitent aucune itération et donc quasiment aucun temps de calcul. Le temps de calcul total est ainsi très fortement réduit (Sowell et Haves 2001) sans perdre d’informations physiques.

Robustesse

SPARK tient sa robustesse de plusieurs facteurs. Tout d’abord, à cause de l’utilisation de la méthode des graphes, le problème de base est réduit et l’inversion à réaliser se fait sur des petits sous-systèmes indépendants. Sur chacun de ces composants, différentes méthodes de résolution peuvent être adoptées (Lawrence Berkeley National Laboratory et Ayres Sowell Associates Inc 2003). La méthode par défaut est celle de Newton-Raphson, mais le logiciel peut aussi utiliser la méthode des sécantes, la méthode de Newton perturbée ou tout simplement la méthode de substitution. En fonction de la méthode utilisée, il est possible d’en préciser les paramètres de contrôle (coefficients de relaxation de la méthode de Newton-Raphson) ou de laisser à SPARK le soin de le faire.

Pour inverser les matrices dans ces méthodes de résolution, différentes stratégies peuvent être adoptées. La méthode par défaut est l’élimination de Gauss mais il est également possible d’utiliser une décomposition LU, SVD ou encore LU creuse (Davis 2004). Ces méthodes d’inversion influent davantage sur le temps de calcul que sur la robustesse de la résolution.

Pour réaliser l’intégration d’une variable dans SPARK, on utilise un type de classe atomique particulier appelé « intégrateur » et défini par le mot clé CLASSTYPE INTEGRATOR. Ce type de classe atomique possède obligatoirement trois ports : « xdot »,

« x » et « dt » et réalise obligatoirement l’opération suivante :

x

xdot dt(II.6)

Sept intégrateurs sont programmés, du plus simple (intégrateur Euler explicite du premier ordre) à des intégrateurs d’ordre élevés (méthode d’Adams-Bashforth-Moulton 4° ordre). Si aucune de ces méthodes ne convient, on peut également créer soi-même un nouvel intégrateur de la même façon que l’on crée une classe atomique classique en spécifiant simplement qu’il s’agit d’une classe intégrateur pour profiter des avantages réservés à ce genre de classe. En effet, pour faire face aux problèmes de convergence, SPARK permet depuis sa dernière version, de travailler en pas de temps variable sur les variables dynamiques (celles reliées à un intégrateur). Ainsi quand un problème de convergence est détecté, le solveur va revenir en arrière, réduire le pas de temps et refaire le calcul jusqu’à obtenir la convergence. L’intérêt d’avoir une classe spécifique pour les intégrateurs réside également dans le fait que, les ports ayant des noms bien définis, on peut passer d’un intégrateur à un autre en changeant juste le nom de cet intégrateur dans la macro-classe ou le problème qui l’utilise.

2 SimSpark : environnement de simulation pour les bâtiments basse consommation