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:34] 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= AugLagGeoCriterion(alm) 
-        augLagGeoCriterion.setNormalGapNorm(ALM_MAX_NORM) +augLagGeoCriterion.setNormalGapNorm(ALM_MAX_NORM) 
-        augLagGeoCriterion.setTangentialGapNorm(ALM_MEAN_NORM) +augLagGeoCriterion.setTangentialGapNorm(ALM_MEAN_NORM) 
-        augLagGeoCriterion.setNormalGapPrec(parameter['gapNTol']) +augLagGeoCriterion.setNormalGapPrec(parameter['gapNTol']) 
-        augLagGeoCriterion.setTangentialGapPrec(parameter['gapTTol']) +augLagGeoCriterion.setTangentialGapPrec(parameter['gapTTol']) 
-        +</code>        
   - Critère géométrique normalisé   - Critère géométrique normalisé
- +<code> 
-        augLagNormalisedGeoCriterion= AugLagNormalisedGeoCriterion(alm) +augLagNormalisedGeoCriterion= AugLagNormalisedGeoCriterion(alm) 
-        augLagNormalisedGeoCriterion.setNormalGapNorm(ALM_MAX_NORM) +augLagNormalisedGeoCriterion.setNormalGapNorm(ALM_MAX_NORM) 
-        augLagNormalisedGeoCriterion.setTangentialGapNorm(ALM_MEAN_NORM) +augLagNormalisedGeoCriterion.setTangentialGapNorm(ALM_MEAN_NORM) 
-        augLagNormalisedGeoCriterion.setNormalGapPrec(parameter['gapNTol']) +augLagNormalisedGeoCriterion.setNormalGapPrec(parameter['gapNTol']) 
-        augLagNormalisedGeoCriterion.setTangentialGapPrec(parameter['gapTTol']) +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= AugLagForceCriterion(alm) 
-        augLagForceCriterion.setContactPressureNorm(ALM_MAX_NORM) +augLagForceCriterion.setContactPressureNorm(ALM_MAX_NORM) 
-        augLagForceCriterion.setContactShearNorm(ALM_MEAN_NORM) +augLagForceCriterion.setContactShearNorm(ALM_MEAN_NORM) 
-        augLagForceCriterion.setContactPressurePrec(parameter['contactPressureTol']) +augLagForceCriterion.setContactPressurePrec(parameter['contactPressureTol']) 
-        augLagForceCriterion.setContactShearPrec(parameter['contactShearTol']) +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>  
-        augLagNormalisedForceCriterion= AugLagNormalisedForceCriterion(alm) +augLagNormalisedForceCriterion= AugLagNormalisedForceCriterion(alm) 
-        augLagNormalisedForceCriterion.setContactPressureNorm(ALM_MAX_NORM) +augLagNormalisedForceCriterion.setContactPressureNorm(ALM_MAX_NORM) 
-        augLagNormalisedForceCriterion.setContactShearNorm(ALM_MEAN_NORM) +augLagNormalisedForceCriterion.setContactShearNorm(ALM_MEAN_NORM) 
-        augLagNormalisedForceCriterion.setContactPressurePrec(parameter['contactPressureTol']) +augLagNormalisedForceCriterion.setContactPressurePrec(parameter['contactPressureTol']) 
-        augLagNormalisedForceCriterion.setContactShearPrec(parameter['contactShearTol']) +augLagNormalisedForceCriterion.setContactShearPrec(parameter['contactShearTol']) 
-        +</code>        
 Il est possible de les combiner pour faire un critère multiple :         Il est possible de les combiner pour faire un critère multiple :        
-         +<code>         
-        augLagGeoForceCriterion = AugLagMultipleCriterions(alm) +augLagGeoForceCriterion = AugLagMultipleCriterions(alm) 
-        augLagGeoForceCriterion.add(augLagGeoCriterion) +augLagGeoForceCriterion.add(augLagGeoCriterion) 
-        augLagGeoForceCriterion.add(augLagNormalisedForceCriterion) +augLagGeoForceCriterion.add(augLagNormalisedForceCriterion) 
-        +</code>        
 Il est possible d'enlever un critère du critère multiple : Il est possible d'enlever un critère du critère multiple :
- +<code> 
-        augLagGeoForceCriterion.remove(augLagNormalisedForceCriterion) +augLagGeoForceCriterion.remove(augLagNormalisedForceCriterion) 
 +</code>
 Pour finir, il faut associer le matériau suivant pour chaque interaction de contact sélectionnée :  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 101: 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).** 
  
Line 121: 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.1414618483.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki