Télécharger kops.notice

Retour à la liste thématique

Afficher cette notice en

Numérotation des lignes :
   1 : $$$$ KOPS     NOTICE  MAGN      17/02/24    21:15:18     9323           
   2 :                                              DATE     17/02/24
   3 : 
   4 :    Operateur KOPS                          Voir aussi :
   5 :      --------------  
   6 : 
   7 :      RES = KOPS CHP1 'MOTCLE' CHP2 ;
   8 : 
   9 :      ou
  10 : 
  11 :      RES = KOPS CHP1 'MOTCLE' TABD ;
  12 : 
  13 : 
  14 : 
  15 :      Objet :
  16 : 
  17 :      Effectue des operations arithmetiques entre deux CHPOINTs
  18 :      ou un CHPOINT et un flottant.
  19 :      Calcule le gradient ou le rotationnel d'un CHPOINT
  20 :      Calcule le produit matrice vecteur entre un objet MATRIK et un
  21 :      CHPOINT
  22 :      Calcule le produit entre un objet MATRIK et un FLOTTANT
  23 : 
  24 :      RES , CHP1 CHP2  CHPOINT et/ou FLOTTANT
  25 :      TABD  objet MODEL 'NAVIER_STOKES'
  26 :      'MOTCLE' a choisir dans la liste suivante :
  27 : 
  28 :                '*'     multiplication  de deux CHPOINT
  29 :                        de type SCALAIRE ou VECTEUR composante par
  30 :                        composante
  31 :                        le resultat est un CHPOINT SCALAIRE ou
  32 :                        VECTEUR
  33 : 
  34 :                '/'  idem precedent pour la division
  35 : 
  36 :                '+'  idem precedent pour l'addition
  37 : 
  38 :                '-'  idem precedent pour la soustraction
  39 : 
  40 :                '|<' Borne inferieurement un CHPOINT par un flottant.
  41 :                     OBJ1 = KOPS OBJ2 '|<' OBJ3;
  42 :                          OBJ1,OBJ2 CHPOINT  OBJ3 FLOTTANT
  43 : 
  44 :                '>|' Borne superieurement un CHPOINT par un flottant.
  45 :                     OBJ1 = KOPS OBJ2 '>|' OBJ3;
  46 :                          OBJ1,OBJ2 CHPOINT  OBJ3 FLOTTANT
  47 : 
  48 :                'GRAD'  calcule le Gradient d'un CHPOINT scal sommet.
  49 :                        Le resultat est un CHPOINT vect centre.
  50 :                        Ne marche que pour les discretisations LINE,MACRO
  51 : 
  52 :                'GRADS' calcule le Gradient d'un CHPOINT scal sommet.
  53 :                        Le resultat est un CHPOINT vect sommet.
  54 :                        Marche pour toutes les discretisations LINE,MACRO
  55 :                        et QUAF.
  56 : 
  57 :                'ROT '  calcule le Rotationel d'un CHPOINT vect sommet
  58 :                        le deuxieme argument doit etre une table domaine
  59 :                        ex : rt2d= kops un 'ROT' $mt ;
  60 :                        Cf exemple 1 ci-dessous
  61 : 
  62 :                'CLIM' N (N is an INTEGER)
  63 :                        surcharge dans CHP1 les valeurs de CHP2
  64 :                        N=0 les noeuds correspondants sont mis a 0.
  65 :                        N=1  "     "         "         "   a 1.e30
  66 :                        N=2  "     "         "         "   a (CHP2*1.e30)
  67 :                        N=3  "     "         "         "   a  CHP2
  68 :                        Si l'entier N est precede du signe -, les composantes
  69 :                        de CHP2 doivent etre identiques a celles de CHP1
  70 :                        sinon CHP1 n'est pas surcharge.
  71 :                        Si l'entier N est positif, on teste sur les composantes
  72 :                        UX UY UZ
  73 : 
  74 :                'MULT'  realise le produit matrice vecteur entre un objet
  75 :                        MATRIK et un CHPOINT ou un FLOTTANT
  76 :                        ex : p1=kops ma1 'MULT' un ;
  77 :                        Cf exemple 2 ci-dessous : calcul de la pression
  78 :                        par une methode de penalisation.
  79 : 
  80 :                'RIMA'  permet le passage d'un objet matrik a un objet
  81 :                        rigidite et vice-versa
  82 : 
  83 :                         Example
  84 :                         -----------
  85 :                         rig1    = KOPS RIMA matrik1 ;
  86 :                         matrik2 = KOPS RIMA rig2 ;
  87 :                         rig1, rig2 objet de type rigidite
  88 :                         matrik2, matrik1 objet de type matrik
  89 : 
  90 :                         Si on veut forcer la création d'un objet RIGIDITE non
  91 :                         symétrique, on indique le mot-clé 'NSYM'
  92 :                         Example
  93 :                         -----------
  94 :                         rig1    = KOPS RIMA matrik1 'NSYM' ;
  95 : 
  96 :                'MATIDE' permet de creer un objet RIGIDITE ou MATRIK identite
  97 :                        mat1 = kops lmot1 geo1 ('MATRIK') ;
  98 :                        ou
  99 :                        lmot1 = liste de noms des inconnues (LISTMOTS)
 100 :                        geo1 = support geometrique des inconnues
 101 :                               (MAILLAGE)
 102 :                        mat1 = RIGIDITE ou MATRIK identite
 103 : 
 104 :                'MATDIAGO' permet de creer un objet RIGIDITE (ou MATRIK)
 105 :                           diagonal
 106 :                        mat1 = kops 'MATDIAGO' chpo1 ('MATRIK') ;
 107 :                        ou
 108 :                        chpo1 = valeurs des termes diagonaux (CHPOINT)
 109 :                        mat1 = RIGIDITE (ou MATRIK) diagonal
 110 :                        Pour les objets RIGIDITE, utilisez plutot
 111 :                        l'operateur 'MANU' 'RIGI'.
 112 : 
 113 :                'CHANINCO' mot clef obsolete. Voir l'operateur CHAN
 114 :                           mot clef 'INCO'.
 115 : 
 116 :                'NINCDUPR' change les noms d'inconnues duales d'une
 117 :                           matrice (ou d'un chpoint dual) afin qu'ils
 118 :                           soient identiques aux noms d'inconnues
 119 :                           primales
 120 :                           |mat2 | = 'KOPS' 'NINCDUPR' |mat1 | ;
 121 :                           |chpo2|                     |chpo1|
 122 :                           mati sont de type RIGIDITE ou MATRIK
 123 : 
 124 :                'NINCPRDU' change les noms d'inconnues duales d'une
 125 :                           matrice (ou d'un chpoint dual) afin qu'ils
 126 :                           correspondent aux noms d'inconnues primales
 127 :                           suivant la correspondance conventionnelle
 128 :                           de Castem
 129 :                           (ex: 'UX' <-> 'FX', 'T' <-> 'Q', etc...)
 130 :                           |mat2 | = 'KOPS' 'NINCPRDU' |mat1 | ;
 131 :                           |chpo2|                     |chpo1|
 132 :                           mati sont de type RIGIDITE ou MATRIK
 133 : 
 134 :                'TRANSPOS' transpose une matrice (type MATRIK ou RIGIDITE)
 135 :                           mat2 = 'KOPS' 'TRANSPOS' mat1 ;
 136 : 
 137 :                'EXTRNINC' mot clef obsolete. Voir l'operateur EXTR
 138 :                           mot clef 'COMP' et 'COMP' 'DUAL'
 139 : 
 140 :                'EXTRINCO' mot clef obsolete. Voir l'operateur EXTR
 141 : 
 142 :                'EXTRDIAG' mot clef obsolete. Voir l'operateur EXTR
 143 :                           mot clef 'DIAG'
 144 : 
 145 :                'SPAIDIAG' Renvoie un inverse approche diagonal (SPAI-D)
 146 :                           (type CHPOINT) d'une matrice (type MATRIK ou
 147 :                           RIGIDITE).
 148 :                           chp1 = 'KOPS' 'SPAIDIAG' mat1 ;
 149 : 
 150 :                'EXTRCOUP' cree une table contenant la partition des
 151 :                           blocs diagonaux que l'on peut faire a partir
 152 :                           de la matrice ma1. Chaque entree de la table
 153 :                           contient la liste des inconnues duales
 154 :                           constituant un bloc.
 155 :                           tab = 'KOPS' 'EXTRCOUP' ma1;
 156 : 
 157 :                'POINTEUR' renvoie le pointeur d'un objet (type ENTIER)
 158 :                           (voir aussi l'operateur 'MANU' 'OBJE')
 159 :                           enti = 'KOPS' 'POINTEUR' obj1 ;
 160 : 
 161 :                'MATRIK'   renvoie un champoint et une matrice
 162 :                           (type MATRIK) vide
 163 :                           chvid matvid = 'KOPS' 'MATRIK' ;
 164 : 
 165 :                'CMCT'     calcule un produit de matrices du type
 166 :                           complement de Schur C D Bt.
 167 :                           D est diagonale stockee dans un chpoint.
 168 :                           mat3 = 'KOPS' 'CMCT' mat1 mat2 (chpo) ;
 169 :                           mat1 : matrice C (type RIGIDITE ou MATRIK)
 170 :                           mat2 : matrice B (type RIGIDITE ou MATRIK)
 171 :                           chpo : matrice D optionnelle (type CHPOINT)
 172 :                           mat3 : matrice CDBt ou CBt
 173 :                                          (type RIGIDITE ou MATRIK)
 174 : 
 175 :                'RELA'     Transforme une matrice (type RIGIDITE) en
 176 :                           matrice de relations (contraintes type
 177 :                           RIGIDITE). On peut préciser un second membre
 178 :                           (type CHPOINT) afin de donner une valeur non
 179 :                           nulle à la relation.
 180 :                           mat2 (chp2) = 'KOPS' 'RELA' mat1 (chp1) ;
 181 : 
 182 :                'CONDENSE' A partir d'un systeme lineaire (A, b)
 183 :                           (type RIGIDITE, CHPOINT), on construit un
 184 :                           systeme reduit obtenu par elimination des
 185 :                           contraintes.
 186 :                           Ar br br1 = 'KOPS' 'CONDENSE' A b ;
 187 : 
 188 :                'EVAPORE'  A partir de la solution d'un systeme reduit
 189 :                           xr (type CHPOINT), on reconstruit la solution
 190 :                           du systeme avant reduction
 191 :                           x = 'KOPS' 'EVAPORE' xr A b br1 ;
 192 : 
 193 : 
 194 :     EXEMPLE DIVERS
 195 :     --------------
 196 : 
 197 : 
 198 : 
 199 :     Exemple 1 :
 200 :     -----------
 201 : 
 202 :     Calcul et trace de la fonction de courant d'un champ de vitesse
 203 :     (par resolution de l'equation laplacien(psi) + rot(un) = 0)
 204 :     un  : champ de vitesse
 205 :     $mt : table domaine
 206 : 
 207 : 
 208 :     sw = kops un 'ROT' $mt ;
 209 :     rk = EQEX $MT 'OPTI' 'EF' 'IMPL'
 210 :     ZONE  $mt OPER LAPN 1.    INCO 'PSI'
 211 :     ZONE  $mt OPER FIMP sw    INCO 'PSI'
 212 :     'CLIM' 'PSI' 'TIMP' (parois) 0.
 213 :     ;
 214 : 
 215 :     rk.'INCO'.'PSI'=kcht $mt scal sommet 0. ;
 216 :     exic rk ;
 217 :     psi=rk.'INCO'.'PSI' ;
 218 :     trace psi mt ;
 219 : 
 220 : 
 221 :     Exemple 2 :
 222 :     -----------
 223 : 
 224 :     Calcul de la pression par une methode de penalisation.
 225 : 
 226 :     KPRESS='CENTREP1' ;   en accord avec l'approximation de pression
 227 :     EPSS=1.e10;           et le EPSS dans le calcul de la vitesse
 228 : 
 229 :     r1=eqex $mt 'OPTI' EF IMPL KPRESS
 230 :     kmac (r1.'1KMAC') ;
 231 :     un= nomc (mots UX UY ) (mots 1UN 2UN ) un ;
 232 : 
 233 :     p1=kops (r1.'1KMAC'.'MATELM') 'MULT' un ;
 234 : 
 235 :     p11= kcht $mt SCAL KPRESS (nomc p1 'SCAL') ;
 236 :     pn=elno $mt p11 KPRESS ;
 237 :     trace pn $mt.maillage ;
 238 : 

© Cast3M 2003 - Tous droits réservés.
Mentions légales