1 #@ MODIF reca_message Macro DATE 14/09/2004 AUTEUR MCOURTOI M.COURTOIS
2 # -*- coding: iso-8859-1 -*-
3 # CONFIGURATION MANAGEMENT OF EDF VERSION
4 # ======================================================================
5 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
6 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
7 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
8 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
9 # (AT YOUR OPTION) ANY LATER VERSION.
11 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
12 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
13 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
14 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
16 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
17 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
18 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
19 # ======================================================================
23 #===========================================================================================
26 # AFFICHAGE DES MESSAGES
29 """classe gérant l'affichage des messages concernant le déroulement de l'optmisation """
30 #Constructeur de la classe
31 def __init__(self,para,val_init,resu_exp,ul_out):
33 self.res_exp = resu_exp
34 res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
35 res.write(' <INFO> MACR_RECAL V1.1 \n\n\n')
39 def affiche_result_iter(self,iter,J,val,residu,Act,ul_out):
40 res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
41 res.write('\n=======================================================\n')
42 res.write('Iteration '+str(iter)+' :\n')
43 res.write('\n=> Fonctionnelle = '+str(J))
44 res.write('\n=> Résidu = '+str(residu))
45 res.write('\n=> Paramètres = ')
46 for i in range(len(val)):
47 res.write('\n '+ self.nom_para[i]+' = '+str(val[i]) )
50 res.write('\n\n Le paramètre ')
52 res.write('\n\n Les paramètres ')
54 res.write(self.nom_para[i]+' ')
56 res.write('\n est en butée sur un bord de leur domaine admissible.')
58 res.write('\n sont en butée sur un bord de leur domaine admissible.')
59 res.write('\n=======================================================\n\n')
62 def affiche_etat_final_convergence(self,iter,max_iter,prec,residu,Act,ul_out):
63 res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
64 if ((iter < max_iter) or (residu < prec)):
65 res.write('\n=======================================================\n')
66 res.write(' CONVERGENCE ATTEINTE ')
68 res.write("\n\n ATTENTION : L'OPTIMUM EST ATTEINT AVEC ")
69 res.write("\n DES PARAMETRES EN BUTEE SUR LE BORD ")
70 res.write("\n DU DOMAINE ADMISSIBLE ")
71 res.write('\n=======================================================\n')
74 res.write("\n=======================================================\n")
75 res.write(' CONVERGENCE NON ATTEINTE ')
76 res.write("\n Le nombre maximal d'itération ("+str(max_iter)+") a été dépassé")
77 res.write('\n=======================================================\n')
80 def affiche_calcul_etat_final(self,para,Hessien,valeurs_propres,vecteurs_propres,sensible,insensible,ul_out):
81 res=open(os.getcwd()+'/fort.'+str(ul_out),'a')
82 res.write('\n\nValeurs propres du Hessien:\n')
83 res.write(str( valeurs_propres))
84 res.write('\n\nVecteurs propres associés:\n')
85 res.write(str( vecteurs_propres))
86 res.write('\n\n --------')
87 res.write('\n\nOn peut en déduire que :')
88 # Paramètres sensibles
89 if (len(sensible)!=0):
90 res.write('\n\nLes combinaisons suivantes de paramètres sont prépondérantes pour votre calcul :\n')
94 colonne=vecteurs_propres[:,i]
95 numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
96 res.write('\n '+str(k)+') ')
98 res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
99 res.write('\n associée à la valeur propre %3.1E \n' %valeurs_propres[i])
100 # Paramètres insensibles
101 if (len(insensible)!=0):
102 res.write('\n\nLes combinaisons suivantes de paramètres sont insensibles pour votre calcul :\n')
106 colonne=vecteurs_propres[:,i]
107 numero=Numeric.nonzero(Numeric.greater(abs(colonne/max(abs(colonne))),1.E-1))
108 res.write('\n '+str(k)+') ')
110 res.write('%+3.1E ' %colonne[j]+'* '+para[j]+' ')
111 res.write('\n associée à la valeur propre %3.1E \n' %valeurs_propres[i])