* fichier : condense1.dgibi
*
* CAST TEST PORTANT SUR L'OPÉRATEUR SUPE
*
* Principe :
* On considère une matrice formée de l'assemblage
* d'une matrice de rigidité rig1
* de matrice de blocage nuls cl1 et cl2
* d'une matrie de masse massc1
* d'une de blocage cl3
* et un chargement formé de
* de deplacement non nuls sur cl3: chpd0
* de forces reparties : chpfi
*
* On resoud indirectement par condensation sur les
* multiplicateurs de Lagrange de cl3 puis par
* une redescente sur tous les neouds
*
* On résoud directement
*
*
*
* On teste en particulier la normalisation des
* multiplicateur de Lagrange lorsque'ils sont maitres
* en choissant un module d'YOUNG une densité élévés
*
* degay 20 02 97
*
*========== taille du maillage ======================
m = 30 ;
n = m ;
E1 = 1.d15 ;
r0 = 7.d6 ;
graph = faux ;
*========== maillage ================================
'OPTI' 'DIME' 2 'MODE' 'PLAN' 'DEFO';
'OPTI' 'ELEM' 'SEG2';
p1 = 0. 0. ;
p2 = 10. 0. ;
li1 = d p1 n p2 ;
opti elem qua4 ;
su1 = tran li1 m ( 0. 1. ) ;
ls1 = cote 3 su1 ;
P3 = 'POINT' su1 'PROC' ( 10. 1. ) ;
P4 = 'POINT' su1 'PROC' ( 0. 1. ) ;
lr0 = cote 4 su1 ;
lr10 = cote 2 su1 ;
* rotation du maillage de 45 pour avoir des conditions
* aux limites composées
'DEPL' su1 'TOUR' 45. ( 0. 5. ) ;
*============== modle et matériau ===================
mod1 = 'MODE' su1 mecanique elastique ;
mod2 = 'MODE' ( li1 et ls1 ) mecanique elastique coq2 ;
mat1 = 'MATE' mod1 'YOUN' E1 'NU' 0.3 'RHO' r0 ;
mat2 = 'MATE' mod2 'YOUN' E1 'NU' 0.3 'RHO' r0 'EPAI' 0.05 ;
*=============== matrices classique ==================
mas1 = 'MASS' mod1 mat1 ;
mas2 = 'MASS' mod2 mat2 ;
massc1 = mas1 'ET' mas2 ;
rig1 = 'RIGI' ( mod1 'ET' mod2 ) ( mat1 'ET' mat2 ) ;
*============ matrice lumpée "elementaire" ============
masd12 = lump mod2 mat2 ;
*================= conditions aux limites =============
cl1 = bloq p1 'UX' ;
cl2 = 'SYMT' lr0 'DEPL' P1 P4 0.01 ;
*
cl3 = 'SYMT' lr10 'DEPL' P2 P3 0.01 ;
* cl3 = 'BLOQ' lr10 'UX' ;
rigt1 = rig1 et cl1 et cl2 et massc1 ;
rigt2 = rigt1 et cl3 ;
*================= Condensation ========================
mailmult = 'EXTR' cl3 'MAIL' 'MULT' ;
sup1 = 'SUPE' 'RIGI' rigt2 mailmult ;
rigc1 = 'EXTR' sup1 'RIGI' ;
*================= Chargement ===========================
* on impose un deplacement unité de lr10 selon l'axe de la plaque
chpd0 = 'DEPI' cl3 1. ;
* une alternative à DEPI est la commande suivante
* chp0 = 'MANU' 'CHPO' ( mailmult ) 1 'FLX' 1. ;
* on applique des forces sur le maillage
chpfi = 'CHPOINT' 'ALEATOIRE' ( mas1 et mas2 ) ;
chpfi = 'NOMC' chpfi ( 'MOTS' 'UX ' 'UY ' 'RZ ' )
( 'MOTS' 'FX ' 'FY ' 'MZ ' )
'NATU' 'DISCRET' ;
*============ résolution indirecte ====================
*
chpfci = 'SUPE' sup1 'CHAR' (chpfi et chpd0) ;
depfl0 = 'RESO' rigc1 chpfci ;
* on redescend
dep0 = 'SUPER' 'DEPL' sup1 depfl0 (chpfi et chpd0);
chpf0 = 'REAC' cl3 dep0;
*============== resolution directe =======================
*
dept1 = 'RESO' rigt2 ( chpd0 'ET' chpfi ) ;
dep1 = 'ENLE' dept1 'LX' ;
chpf1 = 'REAC' cl3 dept1 ;
*=============== Comparaison ============================
*
'OPTI' 'ECHO' 0 ;
* Erreur sur le deplacement
deperr = dep0 - dep1 ;
erx = 'EXCO' deperr 'UX' 'SCAL' / ( 'MAXI' 'ABS' ( 'EXCO' dep1 'UX'));
errx = ( 'MAXI' 'ABS' erx) ;
MESS 'Erreur sur X' ( errx * 100.) '%' ;
ery = 'EXCO' deperr 'UY' 'SCAL' / ( 'MAXI' 'ABS' ( 'EXCO' dep1 'UY'));
errY = ( 'MAXI' 'ABS' erY) ;
MESS 'Erreur sur Y' ( erry * 100.) '%' ;
erz = 'EXCO' deperr 'RZ' 'SCAL' ;
errz = ( 'MAXI' 'ABS' erz) ;
MESS 'Erreur sur RZ' (errz * 1.) 'difference absolue' ;
errtot = ( erx ** 2 ) + ( ery ** 2 ) ;
'OPTI' 'ECHO' 1 ;
'SI' graph ;
'TITR' 'Niveau d erreur' ;
'TRAC' errtot su1 ;
'FINSI' ;
* erreur sur les forces
ferr = chpf1 '-' chpf0 ;
errf = 'MAXI' 'ABS' ferr / ( 'MAXI' 'ABS' chpf0 ) ;
'MESS' 'Erreur sur les forces' ( errf '*' 100.) '%' ;
*=====================================
* Code de fonctionnement
'SI' ((errx > 1.D-9) 'OU' (erry > 1.D-9) 'OU' (errf > 1.D-9 ));
'ERREUR' 5 ;
'SINON'
'ERREUR' 0 ;
'FINSI' ;
'FIN' ;
© Cast3M 2003 - All rights reserved.
Disclaimer