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 21:30] 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> 
-Pour se faire, il faut associer le matériau suivant pour chaque interaction de contact sélectionnée :  +Il existe 4 critères de base :  
 +  - 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é 
 +<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)  
 +<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)  
 +<code>  
 +augLagNormalisedForceCriterion= AugLagNormalisedForceCriterion(alm) 
 +augLagNormalisedForceCriterion.setContactPressureNorm(ALM_MAX_NORM) 
 +augLagNormalisedForceCriterion.setContactShearNorm(ALM_MEAN_NORM) 
 +augLagNormalisedForceCriterion.setContactPressurePrec(parameter['contactPressureTol']) 
 +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 58: 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 78: 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.** 
  
Line 135: Line 178:
  
 <code> <code>
-[r]: +[a]:mtContact/ActiveContactInteractionIterator.cpp 
-[a]:+[a]:mtContact/ActiveContactInteractionIterator.h 
 +[a]:mtContact/ActiveContactInteractionIterator.inl 
 +[a]:mtContact/AugLagAugmentation.cpp 
 +[a]:mtContact/AugLagAugmentation.h 
 +[a]:mtContact/AugLagAugmentationPart.cpp 
 +[a]:mtContact/AugLagAugmentationPart.h 
 +[a]:mtContact/AugLagClassicalAugmentation.cpp 
 +[a]:mtContact/AugLagClassicalAugmentation.h 
 +[a]:mtContact/AugLagCriterion.cpp 
 +[a]:mtContact/AugLagCriterion.h 
 +[a]:mtContact/AugLagCriterionNormMethod.cpp 
 +[a]:mtContact/AugLagCriterionNormMethod.h 
 +[a]:mtContact/AugLagCriterionPart.cpp 
 +[a]:mtContact/AugLagCriterionPart.h 
 +[a]:mtContact/AugLagCriterionStatus.cpp 
 +[a]:mtContact/AugLagCriterionStatus.h 
 +[a]:mtContact/AugLagForceCriterion.cpp 
 +[a]:mtContact/AugLagForceCriterion.h 
 +[a]:mtContact/AugLagFrictionalForceCriterion.cpp 
 +[a]:mtContact/AugLagFrictionalForceCriterion.h 
 +[a]:mtContact/AugLagFrictionalGeoCriterion.cpp 
 +[a]:mtContact/AugLagFrictionalGeoCriterion.h 
 +[a]:mtContact/AugLagFrictionalNormalisedForceCriterion.cpp 
 +[a]:mtContact/AugLagFrictionalNormalisedForceCriterion.h 
 +[a]:mtContact/AugLagFrictionalNormalisedGeoCriterion.cpp 
 +[a]:mtContact/AugLagFrictionalNormalisedGeoCriterion.h 
 +[a]:mtContact/AugLagGeoCriterion.cpp 
 +[a]:mtContact/AugLagGeoCriterion.h 
 +[a]:mtContact/AugLagMaxNorm.cpp 
 +[a]:mtContact/AugLagMaxNorm.h 
 +[a]:mtContact/AugLagMeanNorm.cpp 
 +[a]:mtContact/AugLagMeanNorm.h 
 +[a]:mtContact/AugLagMultipleCriterions.cpp 
 +[a]:mtContact/AugLagMultipleCriterions.h 
 +[a]:mtContact/AugLagNorm.cpp 
 +[a]:mtContact/AugLagNorm.h 
 +[a]:mtContact/AugLagNormalClassicalAugmentation.cpp 
 +[a]:mtContact/AugLagNormalClassicalAugmentation.h 
 +[a]:mtContact/AugLagNormalForceCriterion.cpp 
 +[a]:mtContact/AugLagNormalForceCriterion.h 
 +[a]:mtContact/AugLagNormalGeoCriterion.cpp 
 +[a]:mtContact/AugLagNormalGeoCriterion.h 
 +[a]:mtContact/AugLagNormalisedForceCriterion.cpp 
 +[a]:mtContact/AugLagNormalisedForceCriterion.h 
 +[a]:mtContact/AugLagNormalisedGeoCriterion.cpp 
 +[a]:mtContact/AugLagNormalisedGeoCriterion.h 
 +[a]:mtContact/AugLagNormalisedGeoCriterionPart.cpp 
 +[a]:mtContact/AugLagNormalisedGeoCriterionPart.h 
 +[a]:mtContact/AugLagNormalNormalisedForceCriterion.cpp 
 +[a]:mtContact/AugLagNormalNormalisedForceCriterion.h 
 +[a]:mtContact/AugLagNormalNormalisedGeoCriterion.cpp 
 +[a]:mtContact/AugLagNormalNormalisedGeoCriterion.h 
 +[a]:mtContact/AugLagSingleCriterion.cpp 
 +[a]:mtContact/AugLagSingleCriterion.h 
 +[a]:mtContact/AugLagTangentialClassicalAugmentation.cpp 
 +[a]:mtContact/AugLagTangentialClassicalAugmentation.h 
 +[a]:mtContact/AugLagTangentialForceCriterion.cpp 
 +[a]:mtContact/AugLagTangentialForceCriterion.h 
 +[a]:mtContact/AugLagTangentialGeoCriterion.cpp 
 +[a]:mtContact/AugLagTangentialGeoCriterion.h 
 +[a]:mtContact/AugLagTangentialNormalisedForceCriterion.cpp 
 +[a]:mtContact/AugLagTangentialNormalisedForceCriterion.h 
 +[a]:mtContact/AugLagTangentialNormalisedGeoCriterion.cpp 
 +[a]:mtContact/AugLagTangentialNormalisedGeoCriterion.h 
 +[a]:mtContact/AugmentedLagrangianAugmentationManager.cpp 
 +[a]:mtContact/AugmentedLagrangianAugmentationManager.h 
 +[a]:mtContact/AugmentedLagrangianConvergenceManager.cpp 
 +[a]:mtContact/AugmentedLagrangianConvergenceManager.h 
 +[a]:mtContact/AugmentedLagrangianIterationManager.cpp 
 +[a]:mtContact/AugmentedLagrangianIterationManager.h 
 +[a]:mtContact/AugmentedLagrangianManager.cpp 
 +[a]:mtContact/AugmentedLagrangianManager.h 
 +[a]:mtContact/AutomaticAugmentedLagrangianConvergenceManager.cpp 
 +[a]:mtContact/AutomaticAugmentedLagrangianConvergenceManager.h 
 +[a]:mtContact/AutomaticAugmentedLagrangianManager.cpp 
 +[a]:mtContact/AutomaticAugmentedLagrangianManager.h 
 +[a]:mtContact/ContactInteractionIterator.cpp 
 +[a]:mtContact/ContactInteractionIterator.h 
 +[a]:mtContact/ContactInteractionIterator.inl 
 +[a]:mtContact/ContactInteractionSet.cpp 
 +[a]:mtContact/ContactInteractionSet.h 
 +[a]:mtContact/StandardAugmentedLagrangianConvergenceManager.cpp 
 +[a]:mtContact/StandardAugmentedLagrangianConvergenceManager.h 
 +[a]:mtContact/StandardAugmentedLagrangianManager.cpp 
 +[a]:mtContact/StandardAugmentedLagrangianManager.h 
 +[a]:mtFEM/algos/AugmentedLagrangianBase.cpp 
 +[a]:mtFEM/algos/AugmentedLagrangianBase.h 
 +[r]:mtFEM/algos/AugmentedLagrangianManager.cpp 
 +[r]:mtFEM/algos/AugmentedLagrangianManager.h
 </code> </code>
  
commit/2014/10_29.1414614619.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki