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
commit:2014:10_29 [2014/10/29 22:19] wauteletcommit:2014:10_29 [2016/03/30 15:23] (current) – external edit 127.0.0.1
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.1414617595.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki