* 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 'LDEPE' faux '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 ; 'LDEPE' vrai 'SCALAG' 0 'IMPINV' 2 ; 'LDEPE' faux 'SCALAG' 0 'IMPINV' 2 ; 'LDEPE' vrai 'SCALAG' 1 'IMPINV' 2 ; 'LDEPE' faux 'SCALAG' 1 'IMPINV' 2 ; * 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 ; 'LDEPE' faux 'SCALAG' 1 'IMPINV' 2 ; 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 ; 'LDEPE' faux 'SCALAG' 0 'IMPINV' 2 ; 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