La méthode BOLST

La méthode BOLST est une méthode permettant d’imposer des modifications de commandes U à partir d’un fichier texte .txt (format texte ASCII ou ANSI par exemple). Ces modifications sont indiquées en fonction du temps auquel elles sont désirées. Le temps n’est pas forcément à pas de temps régulier. Les valeurs seront ensuite utilisées en mode échelon (visible au pas de temps suivant, comme pour une loi fonction du temps rentrée aux interfaces : on l’applique à l’instant T et elle est visible dans les résultats à l’instant T+DT, donc si on veut la voir à l’instant T il faut la décaler de DT, avec Tlag par exemple) ou rampe (interpolation linéaire, dans ce cas les valeurs seront visibles dans les résultats aux instants indiqués). Ce sont donc des modifications de type Boucle Ouverte, puisque non calculées à partir de variables contrôlées Y ou de variables mesurées Z.

Créer un fichier de commande .txt au format texte ASCII ou ANSI ou autre

Le fichier texte .txt produit devra contenir les temps d’application de la commande dans les premières colonnes et la valeur des différentes commandes U dans la dernière colonne. Les formats du temps et de la commande sont relativement libres, ou en tout cas peuvent être indiqués avec un format non figé (cf ci-dessous) mais doivent être indiqués au format Fortran dans un fichier de paramétrisation BOLST.TXT. Ce temps est indiqué cependant en jours, mois, année, heure, minute, seconde, même si le format peut être choisi. Attention, la lecture au format Fortran est relativement stricte, il faut respecter les colonnes indiquées dans le format, et les points décimaux de préférence. Si vous n’êtes pas habitués à ces formats, il est préférable le lire une documentation sur le sujet. Sinon le module peut avoir des plantages, ou des comportements non souhaités.

On peut avoir divers régulateurs BOLST, chacun monovariable, et donc agissant sur une seule commande U, mais le fichier de paramétrisation BOLST.TXT est commun à tous ces régulateurs BOLST, avec une ligne de configuration pour chaque régulateur BOLST.

Un exemple est fourni sous dat/ex8_bolst, avec 2 modules BOLST. Un des 2 fichiers agissant sur une commande U en débit (fichier QPRISE_02092001.TXT) contient 4 changements de valeurs :

02:09:2001:00:00:00:0.000          
02:09:2001:05:00:00:-.100          
02:09:2001:15:00:00:0.100          
02:09:2001:21:00:00:0.300          

Attention à ne pas laisser de lignes vides en bas de ce fichier, car sinon ces lignes seront lues comme si tous les nombres sont à 0, ce qui donnera T=0 et a-priori créera un message d’erreur selon lequel les temps ne sont pas croissants (ou ligne vide).

Le format des dates et heures est ici JJ:MM:AA:HH:MM:SS, et la variable U en format F10.3, comme indiqué sur la ligne correspondante du fichier BOLST.TXT avec les notations de format classiques en FORTRAN : (2(I2,1X),I4,1X,3(I2,1X),F10.3)

Ce fichier doit être enregistrée dans un fichier nommé avec un nom de son choix, qui sera indiqué dans le fichier BOLST.TXT. Dans l’exemple fournit on a 2 fichiers : QPRISE_02092001.TXT et HCRUE_G_02092001.TXT situés par défaut dans le même dossier que le fichier XML du projet. Mais quitte à l’indiquer dans le fichier BOLST.TXT ces fichiers peuvent aussi être situés ailleurs, dans un ou plusieurs autres sous-répertoires, avec la commande "DIR=" :

% Cette ligne est optionnelle et ignorée si elle débute par DIR=DEF
DIR=DEFAUT

Mais si on indique un sous-répertoire avec le code "DIR=", alors les fichiers suivants lus plus bas dans le fichier BOLST.TXT seront cherchés dans cet autre sous-répertoire. Il faut mettre le nom complet C :\..., ou il est possible qu’il accepte également les chemins relatifs par rapport au sous-répertoire des données ..\DAT2 ! Il est possible aussi que sous certains OS il faille doubler les \. A tester si besoin ... On peut mettre autant de commande "DIR=" que l’on veut dans un fichier BOLST.TXT, et ainsi les fichiers suivants seront cherchés et lus dans ce ou ces sous-répertoires.

% Dans ce cas les fichiers de données des modules BOLST (QPRISE_02092001.TXT et HCRUE_G_02092001.TXT) seront cherchés dans le sous répertoire C:\DATA\SICBOLST
DIR=C:\DATA\SICBOLST

Ce dernier cas permet d’avoir plusieurs projets SIC situés dans des sous-répertoires différents qui vont lire les même fichiers de données pour des modules BOLST dans un ou plusieurs sous-répertoires communs à ces divers projets SIC.

Attention : pour les versions des programmes Fluvia et Sirene compilés avec le compilateur Digital, le même fichier .TXT ne peut pas être ouvert simultanément plusieurs fois par plusieurs modules. Dans ce cas il faut le dupliquer avec des noms différents utilisés par les modules BOLST correspondants (ou utiliser une version de Fluvia ou Sirene compilée en Intel, cela est indiqué dans la sélection de la version souhaitée).

Configuration du module BOLST dans SIC

Pour configurer un module BOLST dans SIC, il faut :

  • Choisir le module BOLST dans la fenêtre d’édition des modules de régulation,
  • Choisir la (une seule, sinon les autres seront identiques à la première et seule lue sur le fichier .txt correspondant) commande U. Les variables Y, YT et Z ne sont pas utilisées dans ce module, car c’est un module de type Boucle Ouverte,
  • Définir les paramètres spécifiques de la méthode BOLST.

Paramètres spécifiques du module BOLST

Les paramètres spécifiques sont les mêmes que ceux de la méthode BOMAT ou BOSCI :

  • Facteur de mise à l’échelle "a" (facteur multiplicatif, ou encore appelé homothétie)
  • Constante additive "b" (on aura alors U=ax+b)
  • Mode Rampe ou Échelon
  • Ecriture ou non des données du fichier .txt lues sur le fichier Nom_Sirene.lst

Paramètre de mise à l’échelle

C’est un coefficient multiplicateur qui sera appliqué aux valeurs présentes dans le fichier .txt avant application de la commande.
Un second coefficient multiplicateur peut être ajouté dans le fichier BOLST.TXT qui se multipliera à celui-là pour obtenir un facteur modifié global. Ces coefficients seront écrits et indiqués sur le fichier Nom_Sirene.lst

Constante additive

Cette constante additive sera ajoutée à la valeur lue, éventuellement modifiée par le facteur multiplicatif évoqué ci-dessus. La variable U injectée dans le modèle sera donc de la forme U=ax+b où a est le facteur multiplicatif, b la constante additive et x la valeur lue sur le fichier .TXT (ou plutôt interpolée pour le temps courant en mode rampe).

Méthode d’interpolation

Les deux méthodes d’interpolation disponibles sont les mêmes que celles des lois fonction du temps.

Ecriture sur fichier LST

Les données lues sur les fichiers .TXT peuvent être écrites sur le fichier Nom_Sirene.lst, pour vérifier si elle sont bien lues correctement. Dans ce cas, le format est le suivant :

Numéro du BOLST    T-Tlag    Tavant    Taprès    U(1)
BOLST n°    1    -3000.          0.       3600.       2.500
BOLST n°    2   -13800.      -3600.      14400.       0.000

Le Numéro du BOLST est celui lu dans le fichier BOLST.TXT décrit ci-dessous en bout de ligne.
Tavant et Taprès sont les 2 temps lus dans le fichier .TXT sur 2 lignes consécutives qui encadrent ou encadreront le temps courant éventuellement décalé du temps de retard Tlag : T-Tlag

Restriction

On peut avoir plusieurs régulateurs de ce type (BOLST) pour une simulation. Chaque BOLST est monovariable. Toutes les méthodes BOLST récupèrent le nom du fichier et certains paramètres sur un fichier commun BOLST.TXT :

% We can put comment, with lines beginning by %, ! or /
DIR=DEFAUT                % This line is optionnal and ignored if starts by DIR=DEF
TLAG=3600.                % This line is optionnal. It gives a time shift (in s) to apply to the times (in F15.3)
% From version 5.38c3 the scaling factor format changes from 4.1 to 7.3
% The format is then : FORMAT(A20,1X,A36,1X,F7.3,1X,2(I2,1X),I4,1X,3(I2,1X),I2)
HCRUE_G_02092001.TXT      (2(I2,1X),I4,1X,3(I2,1X),F10.3)   1.000 02/09/2001 00:00:00  1
% Time Lag can be different for each BOLST module (as DIR also)
TLAG=14400.                % This line is optionnal. It gives a time shift (in s) to apply to the times (in F15.3)
QPRISE_02092001.TXT       (2(I2,1X),I4,1X,3(I2,1X),F10.3)   1.000 02/09/2001 01:00:00  2

TLAG= permet de décaler dans le temps les valeurs lues. Si TLAG > 0 on ajoute un retard. Si TLAG < 0 on anticipe. On peut avoir plusieurs lignes de définition de Tlag qui s’appliqueront alors aux fichiers des BOLST indiqués à la suite de cette ligne.

Dans le fichier BOLST.TXT il y a également autant de lignes de que modules BOLST utilisés de définition des paramètres de ces modules. Il faut respecter le format de ce fichier. En particulier on doit y trouver sur chaque ligne (illustré sur l’exemple fourni) :

Cette ligne est lue au format : (A20,1X,A36,1X,F7.3,1X,2(I2,1X),I4,1X,3(I2,1X),I2)
QPRISE_02092001.TXT : le nom du fichier sur 20 caractères maximum
(2(I2,1X),I4,1X,3(I2,1X),F10.3) : le format de lecture sur 36 caractères maximum
1.000 : un facteur de scaling supplémentaire qui se multipliera à celui éventuel des paramètres spécifiques de ce module BOLST, au format F7.3
02/09/2001 01:00:00 : un temps de référence, qui sera soustrait aux temps lus sur les lignes du fichier .TXT, au format 2(I2,1X),I4,1X,3(I2,1X)
2 : le numéro du module BOLST, puisqu'on peut en avoir plusieurs, au format I2.

Le numéro du module BOLST est celui dans l’ordre des modules de régulation défini dans les interfaces de SIC. Ils peuvent être dans l’ordre naturel 1 à n, ce qui est le plus classique ou dans un ordre quelconque si pour une raison ou pour une autre c’est plus simple ainsi. On peut également mettre le numéro 0, pour tous, dans ce cas ils seront appliqués dans l’ordre des lignes lues.

Dans le fichier BOLST.TXT on peut mettre des lignes de commentaires qui commencent par les caractères %, ! ou / en première colonne.

La version de Fluvia et/ou Sirene utilisée est libre hormis la remarque ci-dessus sur Digital ou Intel pour avoir la possibilité d’utiliser le même fichier .TXT plusieurs fois par différents modules BOLST.

Le format du fichier BOLST.TXT ainsi que des fichiers contenant les données doivent etre respectés de manière stricte, car ils seront lus ensuite par des programmes Fortran Fluvia ou Sirene.

Prochainement le format des dates et heures pourra être plus largement choisi, dans une liste de formats standards, avec par exemple les formats de Matlab :

Table 1 : Standard MATLAB Date format definitions

Number String Example
=======================================
0 ’dd-mmm-yyyy HH:MM:SS’ 01-Mar-2000 15:45:17
1 ’dd-mmm-yyyy’ 01-Mar-2000
2 ’mm/dd/yy’ 03/01/00
3 ’mmm’ Mar
4 ’m’ M
5 ’mm’ 03
6 ’mm/dd’ 03/01
7 ’dd’ 01
8 ’ddd’ Wed
9 ’d’ W
10 ’yyyy’ 2000
11 ’yy’ 00
12 ’mmmyy’ Mar00
13 ’HH:MM:SS’ 15:45:17
14 ’HH:MM:SS PM’ 3:45:17 PM
15 ’HH:MM’ 15:45
16 ’HH:MM PM’ 3:45 PM
17 ’QQ-YY’ Q1-96
18 ’QQ’ Q1
19 ’dd/mm’ 01/03
20 ’dd/mm/yy’ 01/03/00
21 ’mmm.dd,yyyy HH:MM:SS’ Mar.01,2000 15:45:17
22 ’mmm.dd,yyyy’ Mar.01,2000
23 ’mm/dd/yyyy’ 03/01/2000
24 ’dd/mm/yyyy’ 01/03/2000
25 ’yy/mm/dd’ 00/03/01
26 ’yyyy/mm/dd’ 2000/03/01
27 ’QQ-YYYY’ Q1-1996
28 ’mmmyyyy’ Mar2000
29 (ISO 8601) ’yyyy-mm-dd’ 2000-03-01
30 (ISO 8601) ’yyyymmddTHHMMSS’ 20000301T154517
31 ’yyyy-mm-dd HH:MM:SS’ 2000-03-01 15:45:17

Table 2 : Free-form date format symbols

Symbol Interpretation of format symbol
=======================================
yyyy full year, e.g. 1990, 2000, 2002
yy partial year, e.g. 90, 00, 02
mmmm full name of the month, according to the calendar locale, e.g.
"March", "April" in the UK and USA English locales.
mmm first three letters of the month, according to the calendar
locale, e.g. "Mar", "Apr" in the UK and USA English locales.
mm numeric month of year, padded with leading zeros, e.g. ../03/..
or ../12/..
m capitalized first letter of the month, according to the
calendar locale ; for backwards compatibility.
dddd full name of the weekday, according to the calendar locale, eg.
"Monday", "Tueday", for the UK and USA calendar locales.
ddd first three letters of the weekday, according to the calendar
locale, eg. "Mon", "Tue", for the UK and USA calendar locales.
dd numeric day of the month, padded with leading zeros, e.g.
05/../.. or 20/../..
d capitalised first letter of the weekday ; for backwards
compatibility
HH hour of the day, according to the time format. In case the time
format AM | PM is set, HH does not pad with leading zeros. In
case AM | PM is not set, display the hour of the day, padded
with leading zeros. e.g 10:20 PM, which is equivalent to 22:20 ;
9:00 AM, which is equivalent to 09:00.
MM minutes of the hour, padded with leading zeros, e.g. 10:15,
10:05, 10:05 AM.
SS second of the minute, padded with leading zeros, e.g. 10:15:30,
10:05:30, 10:05:30 AM. 
FFF milliseconds field, padded with leading zeros, e.g.
10:15:30.015.
PM set the time format as time of morning or time of afternoon. AM
or PM is appended to the date string, as appropriate.