Calcul de sensibilité et optimisation : SOL 200






Dans l'exemple suivant on cherche à connaitre la sensibilité du premier mode propre d'une pièce à des raideurs d'accueil.


$ Case Control Section
$
ANALYSIS = MODES
METHOD = 44
$
$
$ Bulk Data Section
$
$
$ Spécification du paramètre permettant de s'arrêter au calcul des sensiblités de la réponse aux variables de conception
$ (A omettre si on souhaite effectuer une optimisation complète, cf. page 1467 du Quick Ref Guide Nastran v2001)
$
PARAM,OPTEXIT,4
$
$ Extraction du premier mode flexible (en considérant qu'il n'existe pas de modes de corps rigide)
$
EIGRL,44,-1.,,1
$
$ Définition des variables de conception (DESVAR,ID,LABEL UTILISATEUR,VALEUR INITIALE)
$
DESVAR,1,RESS1,1.88
DESVAR,2,RESS2,3.72
$
$ Définition de la relation entre variables de conception et propriétés physiques
$ (ici les raideurs suivant x et y, i.e les champs K1 et K2, de la propriété PBUSH n.4)
$
DVPREL1,11,PBUSH,4,K1,,,,,,
,1,1.e6
DVPREL1,12,PBUSH,4,K2,,,,,,
,2,1.e6
$
$ Définition de la grandeur dont on cherche à calculer la sensibilité
$
DRESP1,111,MODE1,FREQ,,,2,1
$


Pour relier les variables de conception du problème d'optimisation à l'ensemble des éléments caractéristiques du modèle (positions de noeuds, épaisseurs de PSHELLs, modules d'Young, etc ...), on consultera les cartes DVCREL, DVPREL, DVMREL et assimilées, regroupées dans les pages 847 à 866 du Quick Ref Guide.
Nota : la manière dont est écrite la carte DVPREL par exemple est à mon sens plutôt contre-intuitive ; la relation que l'on écrit définit en effet la propriété physique comme une fonction de la variable de conception, alors qu'on aurait plutôt tendance (enfin vous je sais pas mais moi oui :-)) à raisonner en sens inverse. Enfin il suffit d'y être attentif, inverser une fonction affine n'est pas trop compliqué ...

L'utilisation de PARAM,OPTEXIT,4 va, comme indiqué ci-dessus, provoquer l'arrêt de l'analyse à la phase de calcul des sensibilités, sensibilités qui seront écrites dans le .f06 sous forme d'une matrice (en l'occurrence d'un vecteur ici, puisqu'on n'a calculé qu'une seule "réponse") appelée DSCM2. La j-ème colonne de cette matrice (i,j) est la sensibilité de la réponse j aux i variables de conception

Une fois qu'il connait ces sensibilités, un bon analyste peut, d'expérience, faire progresser sa conception vers un compromis plus intéressant. Mais le code de calcul peut également le faire, et généralement de manière plus efficace, si on lui donne les renseignements dont il a besoin.
Un problème d'optimisation bien posé est comme on l'a vu caractérisé par la définition de variables de conception (DESVAR et DVPREL ...), mais il faut en outre définir une fonction objectif (cartes DESOBJ et DRESP) et spécifier les limites entre lesquelles on tolère que les variables de conception évoluent : si je cherche à minimiser la déformation dans une poutre en traction, le code va évidemment me dire d'augmenter la section. Mais des impératifs de masse peuvent par exemple restreindre cette possibilité, et le processus d'optimisation consistera en une détermination de la section qui permet de minimiser la déformation tout en s'assurant que la masse ne dépasse pas la limite fixée par le concepteur.

Si un tel exemple est suffisamment trivial pour être résolu par un enfant de cinq ans à l'aide d'une règle de trois (et vice-versa), il n'en va pas de même si on vous demande de minimiser l'inertance coupelle d'un modèle complet de caisse automobile dans la bande 150-170 Hz en jouant simultanément sur l'épaisseur d'une dizaine de pièces, le tout à iso-masse bien évidemment :-)

Donc, voilà, j'espère que vous êtes maintenant convaincus de l'intérêt d'un vrai calcul d'optimisation. En plus des cartes précédemment définies, il faut 1- savoir si l'on veut minimiser ou maximiser la fonction objectif, par l'intermédiaire de la carte DESOBJ du Case Control (le comportement par défaut consiste en une minimisation, donc attention ...) 2- mettre le paramètre OPTEXIT à 0, sa valeur par défaut, et 3- ajouter la définition des contraintes de conception, contraintes qui peuvent aussi bien concerner directement les variables de conception que des grandeurs "annexes" (comme la masse, par exemple).
La spécification de bornes sur les variables de conception se fait directement par l'intermédiaire des champs 5 et 6 de la carte DESVAR (XLB et XUB pour Lower et Upper Bound).
La spécification de limites sur les autres grandeurs de réponse passe par la définition de ces grandeurs (DRESP1,DRESP2) puis par l'écriture des contraintes à proprement parler, à l'aide de la carte DCONSTR.
On sélectionnera ensuite dans le Case Control les contraintes actives pour l'ensemble du calcul (DESGLB) ou celles actives pour un subcase donné (DESSUB).
Pour résumer, voici ce que doit contenir au minimum un calcul complet d'optimisation :



ANALYSIS = ...
DESOBJ(MIN/MAX) = ...
DESGLB = ...
$
BEGIN BULK
$
DESVAR,...
DRESP1,...
DVPREL/DVMREL/DVCREL,...
DCONSTR,...
...
$
ENDDATA

Et voici maintenant la totalité des cartes spécifiques qu'il peut contenir :



ANALYSIS = ...
DESOBJ = ...
DESGLB = ...
SUBCASE 1
  DESSUB =
$
BEGIN BULK
$
$ Variables de conception et lien avec les propriétés du modèle
$
DESVAR,...
DVPREL/DVMREL/DVCREL,...
DVSHAP,DVBSHAP/DVGEOM/DVGRID,...
$
$ Grandeurs de réponse
$
DRESP1,...
DRESP2,...
DEQATN,...
DTABLE,...
$
$ Contraintes
$
DCONSTR,...
DCONADD,...
DSCONS,...
DSCREEN,...
$
$ Paramètres
$
DOPTPRM,...
...
$
ENDDATA

Je ne crois pas en avoir oubliées ... Enfin si vous en êtes là je pense que vous connaissez au moins aussi bien le manuel d'optimisation que moi, et c'est plus à titre d'aide-mémoire que je les ai indiquées.

Retour à la page précédente