$$$$ KOPS NOTICE MAGN 17/02/24 21:15:18 9323 DATE 17/02/24 Operateur KOPS Voir aussi : -------------- RES = KOPS CHP1 'MOTCLE' CHP2 ; ou RES = KOPS CHP1 'MOTCLE' TABD ; Objet : Effectue des operations arithmetiques entre deux CHPOINTs ou un CHPOINT et un flottant. Calcule le gradient ou le rotationnel d'un CHPOINT Calcule le produit matrice vecteur entre un objet MATRIK et un CHPOINT Calcule le produit entre un objet MATRIK et un FLOTTANT RES , CHP1 CHP2 CHPOINT et/ou FLOTTANT TABD objet MODEL 'NAVIER_STOKES' 'MOTCLE' a choisir dans la liste suivante : '*' multiplication de deux CHPOINT de type SCALAIRE ou VECTEUR composante par composante le resultat est un CHPOINT SCALAIRE ou VECTEUR '/' idem precedent pour la division '+' idem precedent pour l'addition '-' idem precedent pour la soustraction '|<' Borne inferieurement un CHPOINT par un flottant. OBJ1 = KOPS OBJ2 '|<' OBJ3; OBJ1,OBJ2 CHPOINT OBJ3 FLOTTANT '>|' Borne superieurement un CHPOINT par un flottant. OBJ1 = KOPS OBJ2 '>|' OBJ3; OBJ1,OBJ2 CHPOINT OBJ3 FLOTTANT 'GRAD' calcule le Gradient d'un CHPOINT scal sommet. Le resultat est un CHPOINT vect centre. Ne marche que pour les discretisations LINE,MACRO 'GRADS' calcule le Gradient d'un CHPOINT scal sommet. Le resultat est un CHPOINT vect sommet. Marche pour toutes les discretisations LINE,MACRO et QUAF. 'ROT ' calcule le Rotationel d'un CHPOINT vect sommet le deuxieme argument doit etre une table domaine ex : rt2d= kops un 'ROT' $mt ; Cf exemple 1 ci-dessous 'CLIM' N (N is an INTEGER) surcharge dans CHP1 les valeurs de CHP2 N=0 les noeuds correspondants sont mis a 0. N=1 " " " " a 1.e30 N=2 " " " " a (CHP2*1.e30) N=3 " " " " a CHP2 Si l'entier N est precede du signe -, les composantes de CHP2 doivent etre identiques a celles de CHP1 sinon CHP1 n'est pas surcharge. Si l'entier N est positif, on teste sur les composantes UX UY UZ 'MULT' realise le produit matrice vecteur entre un objet MATRIK et un CHPOINT ou un FLOTTANT ex : p1=kops ma1 'MULT' un ; Cf exemple 2 ci-dessous : calcul de la pression par une methode de penalisation. 'RIMA' permet le passage d'un objet matrik a un objet rigidite et vice-versa Example ----------- rig1 = KOPS RIMA matrik1 ; matrik2 = KOPS RIMA rig2 ; rig1, rig2 objet de type rigidite matrik2, matrik1 objet de type matrik Si on veut forcer la création d'un objet RIGIDITE non symétrique, on indique le mot-clé 'NSYM' Example ----------- rig1 = KOPS RIMA matrik1 'NSYM' ; 'MATIDE' permet de creer un objet RIGIDITE ou MATRIK identite mat1 = kops lmot1 geo1 ('MATRIK') ; ou lmot1 = liste de noms des inconnues (LISTMOTS) geo1 = support geometrique des inconnues (MAILLAGE) mat1 = RIGIDITE ou MATRIK identite 'MATDIAGO' permet de creer un objet RIGIDITE (ou MATRIK) diagonal mat1 = kops 'MATDIAGO' chpo1 ('MATRIK') ; ou chpo1 = valeurs des termes diagonaux (CHPOINT) mat1 = RIGIDITE (ou MATRIK) diagonal Pour les objets RIGIDITE, utilisez plutot l'operateur 'MANU' 'RIGI'. 'CHANINCO' mot clef obsolete. Voir l'operateur CHAN mot clef 'INCO'. 'NINCDUPR' change les noms d'inconnues duales d'une matrice (ou d'un chpoint dual) afin qu'ils soient identiques aux noms d'inconnues primales |mat2 | = 'KOPS' 'NINCDUPR' |mat1 | ; |chpo2| |chpo1| mati sont de type RIGIDITE ou MATRIK 'NINCPRDU' change les noms d'inconnues duales d'une matrice (ou d'un chpoint dual) afin qu'ils correspondent aux noms d'inconnues primales suivant la correspondance conventionnelle de Castem (ex: 'UX' <-> 'FX', 'T' <-> 'Q', etc...) |mat2 | = 'KOPS' 'NINCPRDU' |mat1 | ; |chpo2| |chpo1| mati sont de type RIGIDITE ou MATRIK 'TRANSPOS' transpose une matrice (type MATRIK ou RIGIDITE) mat2 = 'KOPS' 'TRANSPOS' mat1 ; 'EXTRNINC' mot clef obsolete. Voir l'operateur EXTR mot clef 'COMP' et 'COMP' 'DUAL' 'EXTRINCO' mot clef obsolete. Voir l'operateur EXTR 'EXTRDIAG' mot clef obsolete. Voir l'operateur EXTR mot clef 'DIAG' 'SPAIDIAG' Renvoie un inverse approche diagonal (SPAI-D) (type CHPOINT) d'une matrice (type MATRIK ou RIGIDITE). chp1 = 'KOPS' 'SPAIDIAG' mat1 ; 'EXTRCOUP' cree une table contenant la partition des blocs diagonaux que l'on peut faire a partir de la matrice ma1. Chaque entree de la table contient la liste des inconnues duales constituant un bloc. tab = 'KOPS' 'EXTRCOUP' ma1; 'POINTEUR' renvoie le pointeur d'un objet (type ENTIER) (voir aussi l'operateur 'MANU' 'OBJE') enti = 'KOPS' 'POINTEUR' obj1 ; 'MATRIK' renvoie un champoint et une matrice (type MATRIK) vide chvid matvid = 'KOPS' 'MATRIK' ; 'CMCT' calcule un produit de matrices du type complement de Schur C D Bt. D est diagonale stockee dans un chpoint. mat3 = 'KOPS' 'CMCT' mat1 mat2 (chpo) ; mat1 : matrice C (type RIGIDITE ou MATRIK) mat2 : matrice B (type RIGIDITE ou MATRIK) chpo : matrice D optionnelle (type CHPOINT) mat3 : matrice CDBt ou CBt (type RIGIDITE ou MATRIK) 'RELA' Transforme une matrice (type RIGIDITE) en matrice de relations (contraintes type RIGIDITE). On peut préciser un second membre (type CHPOINT) afin de donner une valeur non nulle à la relation. mat2 (chp2) = 'KOPS' 'RELA' mat1 (chp1) ; 'CONDENSE' A partir d'un systeme lineaire (A, b) (type RIGIDITE, CHPOINT), on construit un systeme reduit obtenu par elimination des contraintes. Ar br br1 = 'KOPS' 'CONDENSE' A b ; 'EVAPORE' A partir de la solution d'un systeme reduit xr (type CHPOINT), on reconstruit la solution du systeme avant reduction x = 'KOPS' 'EVAPORE' xr A b br1 ; EXEMPLE DIVERS -------------- Exemple 1 : ----------- Calcul et trace de la fonction de courant d'un champ de vitesse (par resolution de l'equation laplacien(psi) + rot(un) = 0) un : champ de vitesse $mt : table domaine sw = kops un 'ROT' $mt ; rk = EQEX $MT 'OPTI' 'EF' 'IMPL' ZONE $mt OPER LAPN 1. INCO 'PSI' ZONE $mt OPER FIMP sw INCO 'PSI' 'CLIM' 'PSI' 'TIMP' (parois) 0. ; rk.'INCO'.'PSI'=kcht $mt scal sommet 0. ; exic rk ; psi=rk.'INCO'.'PSI' ; trace psi mt ; Exemple 2 : ----------- Calcul de la pression par une methode de penalisation. KPRESS='CENTREP1' ; en accord avec l'approximation de pression EPSS=1.e10; et le EPSS dans le calcul de la vitesse r1=eqex $mt 'OPTI' EF IMPL KPRESS kmac (r1.'1KMAC') ; un= nomc (mots UX UY ) (mots 1UN 2UN ) un ; p1=kops (r1.'1KMAC'.'MATELM') 'MULT' un ; p11= kcht $mt SCAL KPRESS (nomc p1 'SCAL') ; pn=elno $mt p11 KPRESS ; trace pn $mt.maillage ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales