* fichier : elimrela.dgibi
************************************************************************
* NOM : elimrela
* DESCRIPTION : Test de l'élimination des relations dans RESO et KRES
*
*
*
* LANGAGE : GIBIANE-CAST3M
* AUTEUR : Stephane GOUNAND (CEA/DEN/DM2S/SEMT/LTA)
* mel : stephane.gounand@cea.fr
**********************************************************************
* VERSION : v1, 17/02/2019, version initiale
* HISTORIQUE : v1, 17/02/2019, création
* HISTORIQUE :
* HISTORIQUE :
************************************************************************
*
interact= FAUX ;
*
vimpi = 1 ; limpi = ('NEG' vimpi 0) ;
*
************************************************************************
*
* PROCEDURES
*
************************************************************************
*
'DEBPROC' VERIRESO ;
'ARGUMENT' mat*'RIGIDITE' ;
'ARGUMENT' sol*'CHPOINT' ;
'ARGUMENT' smb*'CHPOINT' ;
'ARGUMENT' tol*'FLOTTANT' ;
*
res = '-' smb ('*' mat sol) ;
mresa = 'MAXIMUM' res 'ABS' ;
msmba = 'MAXIMUM' smb 'ABS' ;
mresa = '/' mresa msmba ;
lok = ('<' mresa tol) ;
'SI' lok ;
'SINO' ;
'FINS' ;
'MESS' ch ;
'RESP' lok ;
'FINP' ;
*
************************************************************************
* NOM : GCOND
* DESCRIPTION : Effectue n fois la procédure de condensation en vue
* d'éliminer les multiplicateurs de Lagrange
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* VERSION : v1, 07/02/2019, version initiale
************************************************************************
*
'DEBPROC' GCOND ;
'ARGUMENT' mat*'RIGIDITE' ;
'ARGUMENT' smb*'CHPOINT' ;
'ARGUMENT' nelim*'ENTIER' ;
'ARGUMENT' limpi/'LOGIQUE' ;
'SI' ('NON' ('EXISTE' limpi)) ;
limpi = FAUX ;
'FINSI' ;
*
tcond = 'TABLE' ;
tcond . 0 = 'TABLE' ;
tcond . 0 . 'mat' = mat ;
tcond . 0 . 'smb' = smb ;
'SI' ('>' nelim 0) ;
'REPETER' iielim nelim ;
ielim = &iielim ;
ielimm = '-' ielim 1 ;
mat = tcond . ielimm . 'mat' ;
smb = tcond . ielimm . 'smb' ;
tcond . ielim = 'TABLE' ;
tcond . ielim . 'mat' = matc ;
tcond . ielim . 'smb' = smbc ;
tcond . ielim . 'smb1' = smb1 ;
'FIN' iielim ;
'FINSI' ;
mat = tcond . nelim . 'mat' ;
smb = tcond . nelim . 'smb' ;
'RESPRO' mat smb tcond ;
*
* End of procedure file GCOND
*
'FINPROC' ;
************************************************************************
* NOM : GEVAP
* DESCRIPTION : Effectue n fois la procédure de décondensation en vue
* de récupérer les multiplicateurs de Lagrange
* AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF)
* VERSION : v2, 02/07/2019
************************************************************************
*
'DEBPROC' GEVAP ;
'ARGUMENT' dsolc*'CHPOINT' ;
'ARGUMENT' tcc*'TABLE' ;
*
dsol = dsolc ;
'SI' ('>' dtcc 0) ;
'REPETER' iitcc dtcc ;
* itcc = '-' dtcc ('-' iitcc 1) ;
itcc = '-' dtcc &iitcc ;
ktg = tcc . itcc . 'mat' ;
ftot = tcc . itcc . 'smb' ;
ftot1 = tcc . ('+' itcc 1) . 'smb1' ;
'FIN' iitcc ;
'FINSI' ;
'RESPRO' dsol ;
*
* End of procedure file GEVAP
*
'FINPROC' ;
*
************************************************************************
*
* JEU DE DONNEES
*
************************************************************************
*
lok = vrai ; tol = 1.d-14 ;
*
p0 = 0. 0 0 ; p1 = 1. 0. 0 ; p2 = 2. 0. 0 ;
mt = p1 'ET' p0 'ET' p2 ;
*
*
mat = rig 'ET' con1 'ET' con2 ;
smb = for 'ET' vcon1 'ET' vcon2 ;
*
*xx = 'KRES' mat smb 'TYPINV' 2 'PRECOND' 0 'IMPR' 4 'RESID'
*1.D-20 'ELIM' 0 'TYRENU' 'RIEN' 'PCMLAG' 'RIEN' 'IMPINV' 4 'METASS'
* 6 ;
*
* RESO ELIM ok
*
* Copie de sécurité
matc1 = '*' mat 1. ;
matc2 = '*' mat 1. ;
matc3 = '*' mat 1. ;
'OPTI' impi vimpi ;
* PS : RESO ne retriangule pas si elim change
*xxc2 = 'RESO' matc smb 'ELIM' 1 ;
*xxc3 = 'RESO' matc smb 'ELIM' 0 ;
*
lok = lok1 'ET' lok2 'ET' lok3 ;
*
*
* KRES élimination en interne opérateur
*
* Copie de sécurité
mat1 = '*' mat 1. ;
mat2 = '*' mat 1. ;
mat3 = '*' mat 1. ;
mat4 = '*' mat 1. ;
'OPTI' impi vimpi ;
*
lok = lok1 'ET' lok2 'ET' lok3 'ET' lok4 ;
*
* KRES élimination en externe opérateur avec les procédures GCOND et
* GEVAP (nb elimination=2)
*
* Copie de sécurité
mat1 = '*' mat 1. ;
mat2 = '*' mat 1. ;
*
matc1 smbc1 tcond1 = GCOND mat1 smb nelim limpi ;
lokc1 = verireso matc1 xxc1 smbc1 tol chid ;
xx1 = GEVAP xxc1 tcond1 ;
lok1 = verireso mat xx1 smb tol chid ;
*
matc2 smbc2 tcond2 = GCOND mat2 smb nelim limpi ;
lokc2 = verireso matc2 xxc2 smbc2 tol chid ;
xx2 = GEVAP xxc2 tcond1 ;
lok2 = verireso mat xx2 smb tol chid ;
*
lok = lokc1 'ET' lok1 'ET' lokc2 'ET' lok2 ;
'FIN' belim ;
*
'SI' lok ;
'MESSAGE' 'Tout sest bien passe' ;
'SINON' ;
'MESSAGE' '!!! Il y a eu des erreurs' ;
'FINSI' ;
*
'SI' interact ;
'OPTION' 'DONN' 5 'ECHO' 1 ;
'FINSI' ;
'SI' ('NON' lok) ;
'ERREUR' 5 ;
'FINSI' ;
*
* End of dgibi file ELIMRELA
*
'FIN' ;
					© Cast3M 2003 - Tous droits réservés.
					Mentions légales