* fichier : cmct1.dgibi ************************************************************************ ************************************************************************ * * CAST TEST PORTANT SUR L'OPÉRATEUR CMCT et l'opérateur * * * Principe : * On considère une matrice formée de l'assemblage * de matrice de blocage nuls cl1 et cl2 * d'une matrie de masse diagonale massc1 (LUMP) * et un chargement formé * de forces reparties : chpfi * de second membre sur les relations * * On resoud indirectement par condensation sur les * multiplicateurs de Lagrange de cl3 puis par * une redescente sur tous les noeuds. * * On résoud directement * * On compare * * * degay 22 04 97 * *========== taille du maillage ====================== m = 30 ; n = m ; E1 = 1.d15 ; r0 = 7.d35 ; graph = faux ; * coefficient qui sert à abimer le conditionnement du système alpha = 1.d6 ; *========== maillage ================================ p1 = 0. 0. ; p2 = 10. 0. ; li1 = d p1 n p2 ; P3 = 'POINT' su1 'PROC' ( 10. 1. ) ; P4 = 'POINT' su1 'PROC' ( 0. 1. ) ; * rotation du maillage de 45 pour avoir des conditions * aux limites composées *============== modele et matériau =================== *=============== matrices classique ================== massc1 = mas1 'ET' mas2 ; * stockage sous la forme d'un champ point 'RZ' 1. ; chpm1 = massc1 '*' chpu1 ; chpm1 = 'NOMC' chpm1 'NATU' 'DISCRET' ; * inversion du champ point *================= conditions aux limites ============= * on multiplie la matrice par alpha pour tester le conditionnement cl3 = cl0 'ET' cl1 'ET' cl2 ; * matrice globale du systeme rigt1 = cl3 'ET' massc1 ; * maillage support des multiplicateurs *================= Chargement =========================== * on impose un deplacement unité de lr10 selon l'axe de la plaque * on applique des forces sur le maillage chpfi = 'CHPOINT' 'ALEATOIRE' ( mas1 et mas2 ) ; 'NATU' 'DISCRET' ; *============ résolution indirecte ==================== temps zero ; *-- avec SUPER **chpfci1 = 'SUPE' sup1 'CHAR' chpfi ; **chpd01 = 'SUPE' sup1 'CHAR' chpd0; **depfl1 = 'RESO' rigc1 ( chpd01 'ET' chpfci1 ) ; * on redescend **chpf1 = 'REAC' cl3 depfl1 ; **dep1 = 'RESO' massc1 ( chpf1 'ET' chpfi ); t0 = TABTPS.'TEMPS_CPU'.'INITIAL' ; temps zero ; *-- avec CMCT mac0 sgac0 = temps sgac ; depsl2 = '*' mac1 sgac1 = temps sgac ; difsg = sgac1 '-' sgac0 ; difmsg = mac1 '-' mac0 ; * second membre du systeme sur les multiplicateurs fcl2 = cl3 '*' depsl2 '-' chpd0 ; depcor2 = '*' 'NATURE' 'DIFFUS' ; dep2 = depsl2 + depcor2 ; t01 = TABTPS.'TEMPS_CPU'.'INITIAL' ; t01 = t01 + 1; temps zero ; 'MESS' 'Nombre de segment Active' difsg ; 'MESS' 'Memoire correspondante' difmsg ; errsg = >eg difsg 17; * 2019/12/11 SG Le nouveau paradigme (fiche anomalie 10273) étant de ne * pas désactiver les segments, on commente ce test *new-paradigm 'SI' errsg ; *new-paradigm 'MESS' 'Erreur dans la desactivation des segments' ; *new-paradigm 'ERREUR' 5 ; *new-paradigm 'FINSI' ; *============== resolution directe ======================= * t1 = TABTPS.'TEMPS_CPU'.'INITIAL' ; t1 = t1 + 1; 'SAUTER' 1 'LIGNE' ; 'MESS' 'Par rapport à la méthode directe : ' ; (1. * t1 / t01 ) ; 'SAUTER' 1 'LIGNE' ; *=============== Comparaison ============================ * * Erreur sur le deplacement deperr = dep3 * 2. - dep2 - dep1 / 2. ; errtot = ( erx ** 2 ) + ( ery ** 2 ) ; 'SI' graph ; 'TITR' 'Niveau d erreur' ; 'TRAC' errtot su1 ; 'FINSI' ; * erreur sur les forces ferr = chpf3 * 2. '-' chpf2 - chpf1 ; *===================================== * 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 - Tous droits réservés.
Mentions légales