Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2014:10_29

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
commit:2014:10_29 [2014/10/29 22:19] wauteletcommit:2014:10_29 [2014/10/30 17:53] wautelet
Line 8: Line 8:
  
   - Version standard (On effectue un nombre fixe d'augmentations par pas de temps sur les interactions de contact sélectionnées.) :   - Version standard (On effectue un nombre fixe d'augmentations par pas de temps sur les interactions de contact sélectionnées.) :
- +<code> 
-            alm = StandardAugmentedLagrangianManager(metafor) +alm = StandardAugmentedLagrangianManager(metafor) 
-            alm.setNbOfIterationsPerStep(parameter['NbreAugmentation'])+alm.setNbOfIterationsPerStep(parameter['NbreAugmentation'])
                          
-            augLagAugmentation = AugLagClassicalAugmentation(alm) +augLagAugmentation = AugLagClassicalAugmentation(alm) 
-            ci.setAugLagAugmentation(augLagAugmentation)+ci.setAugLagAugmentation(augLagAugmentation)
                          
-            alm.addContactInteraction(ci) +alm.addContactInteraction(ci) 
 +</code>
   - Version automatique (On effectue un nombre d'augmentations par pas de temps de manière à satisfaire un critère donné (Critère géométrique ou en force), et ce nombre ne peut pas être supérieur à une valeur maximale donnée.) :    - Version automatique (On effectue un nombre d'augmentations par pas de temps de manière à satisfaire un critère donné (Critère géométrique ou en force), et ce nombre ne peut pas être supérieur à une valeur maximale donnée.) : 
- +<code> 
-            alm = AutomaticAugmentedLagrangianManager(metafor) +alm = AutomaticAugmentedLagrangianManager(metafor) 
-            alm.setMaxNbOfIterations(parameter['NbreAugmentationMax'])+alm.setMaxNbOfIterations(parameter['NbreAugmentationMax'])
                          
-            augLagCriterion = AugLagGeoCriterion(alm) +augLagCriterion = AugLagGeoCriterion(alm) 
-            augLagCriterion.setNormalGapPrec(parameter['gapNTol']) +augLagCriterion.setNormalGapPrec(parameter['gapNTol']) 
-            augLagCriterion.setTangentialGapPrec(parameter['gapTTol'])             +augLagCriterion.setTangentialGapPrec(parameter['gapTTol'])             
-            ci.setAugLagCriterion(augLagCriterion)+ci.setAugLagCriterion(augLagCriterion)
                          
-            augLagAugmentation = AugLagClassicalAugmentation(alm) +augLagAugmentation = AugLagClassicalAugmentation(alm) 
-            ci.setAugLagAugmentation(augLagAugmentation)+ci.setAugLagAugmentation(augLagAugmentation)
                          
-            alm.addContactInteraction(ci) +alm.addContactInteraction(ci) 
 +</code>
 Il existe 4 critères de base :  Il existe 4 critères de base : 
   - Critère géométrique    - Critère géométrique 
 +<code>
 +augLagGeoCriterion= AugLagGeoCriterion(alm)
 +augLagGeoCriterion.setNormalGapNorm(ALM_MAX_NORM)
 +augLagGeoCriterion.setTangentialGapNorm(ALM_MEAN_NORM)
 +augLagGeoCriterion.setNormalGapPrec(parameter['gapNTol'])
 +augLagGeoCriterion.setTangentialGapPrec(parameter['gapTTol'])
 +</code>        
   - Critère géométrique normalisé   - Critère géométrique normalisé
 +<code>
 +augLagNormalisedGeoCriterion= AugLagNormalisedGeoCriterion(alm)
 +augLagNormalisedGeoCriterion.setNormalGapNorm(ALM_MAX_NORM)
 +augLagNormalisedGeoCriterion.setTangentialGapNorm(ALM_MEAN_NORM)
 +augLagNormalisedGeoCriterion.setNormalGapPrec(parameter['gapNTol'])
 +augLagNormalisedGeoCriterion.setTangentialGapPrec(parameter['gapTTol'])
 +</code>        
   - Critère force ou pression/cisaillement (si on utilise la méthode area in contact)    - Critère force ou pression/cisaillement (si on utilise la méthode area in contact) 
 +<code>
 +augLagForceCriterion= AugLagForceCriterion(alm)
 +augLagForceCriterion.setContactPressureNorm(ALM_MAX_NORM)
 +augLagForceCriterion.setContactShearNorm(ALM_MEAN_NORM)
 +augLagForceCriterion.setContactPressurePrec(parameter['contactPressureTol'])
 +augLagForceCriterion.setContactShearPrec(parameter['contactShearTol'])
 +</code>        
   - Critère force ou pression/cisaillement normalisé (si on utilise la méthode area in contact)    - Critère force ou pression/cisaillement normalisé (si on utilise la méthode area in contact) 
- +<code>  
-Il est possible de les combiner pour faire un critère multiple : +augLagNormalisedForceCriterion= AugLagNormalisedForceCriterion(alm) 
- +augLagNormalisedForceCriterion.setContactPressureNorm(ALM_MAX_NORM) 
- +augLagNormalisedForceCriterion.setContactShearNorm(ALM_MEAN_NORM) 
- +augLagNormalisedForceCriterion.setContactPressurePrec(parameter['contactPressureTol']) 
-Pour se faire, il faut associer le matériau suivant pour chaque interaction de contact sélectionnée :  +augLagNormalisedForceCriterion.setContactShearPrec(parameter['contactShearTol']) 
 +</code>         
 +Il est possible de les combiner pour faire un critère multiple :         
 +<code>         
 +augLagGeoForceCriterion = AugLagMultipleCriterions(alm) 
 +augLagGeoForceCriterion.add(augLagGeoCriterion) 
 +augLagGeoForceCriterion.add(augLagNormalisedForceCriterion) 
 +</code>         
 +Il est possible d'enlever un critère du critère multiple : 
 +<code> 
 +augLagGeoForceCriterion.remove(augLagNormalisedForceCriterion) 
 +</code> 
 +Pour finir, il faut associer le matériau suivant pour chaque interaction de contact sélectionnée :  
 +<code>
         if(parameter['ContactType']=='Frictionless'):         if(parameter['ContactType']=='Frictionless'):
             materset.define (2, AugLagFrictionlessContactMaterial)                     materset.define (2, AugLagFrictionlessContactMaterial)        
Line 68: Line 101:
         else:         else:
             print "Bad definition of type contact"             print "Bad definition of type contact"
-             +</code>             
-Étant donné que la configuration/état interne de l'objet "critère" et "augmentation" dépend du matériau associé à l'interaction de contact, il faut à chaque fois instancier un objet critère et augmentation pour chaque interaction de contact qui possède un matériau différent (Frictionless, Sticking et Coulomb). +**Étant donné que la configuration/état interne de l'objet "critère" et "augmentation" dépend du matériau associé à l'interaction de contact, il faut à chaque fois instancier un objet critère et augmentation pour chaque interaction de contact qui possède un matériau différent (Frictionless, Sticking et Coulomb).** 
  
 <note important> <note important>
Line 88: Line 121:
  
 Pour se faire, il suffit d'utiliser les commandes suivantes :  Pour se faire, il suffit d'utiliser les commandes suivantes : 
- +<code> 
-    extractorFt = TangentForceValueExtractor(ci) +extractorFt = TangentForceValueExtractor(ci) 
-    extractorFt.setUseToolLocalSystemAxes(True) +extractorFt.setUseToolLocalSystemAxes(True) 
-    valuesmanager.add(1, extractorFt,'Ft')  +valuesmanager.add(1, extractorFt,'Ft')  
 +</code>
 **Cette fonctionnalité ne marche que pour l'instant en état plan déformation et en axisymétrique.**  **Cette fonctionnalité ne marche que pour l'instant en état plan déformation et en axisymétrique.** 
  
commit/2014/10_29.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki