RSA : API - Algorithme de Lanczos par blocs

RSA : API - Algorithme de Lanczos par blocs

sebastien_le-luhernT9GFY
Community Visitor Community Visitor
465 Visites
1 Réponse
Message 1 sur 2

RSA : API - Algorithme de Lanczos par blocs

sebastien_le-luhernT9GFY
Community Visitor
Community Visitor

Bonjour à tous,

 

Je développe en ce moment une macro me permettant de créer automatiquement mes cas de séisme.

Je souhaite que la méthode appliquée de mon cas modal soit l'algorithme de Lanczos par blocs.

Capture.JPG

 

Cependant, dans le code, cela ne m'est pas proposé :

 

'ModalParams.Method = I_MAA_BASE_REDUCTION
'ModalParams.Method = I_MAA_BLOCK_SUBSPACE_ITERATION
'ModalParams.Method = I_MAA_LANCZOS
'ModalParams.Method = I_MAA_PCG
'ModalParams.Method = I_MAA_PCG_RITZ
'ModalParams.Method = I_MAA_SUBSPACE_ITERATION

 

 

Quelqu'un saurait me trouver la solution ? 😁

 

Merci !


Le titre du sujet a été modifié par un modérateur pour faciliter la recherche. Titre original:
API - Algorithme de Lanczos par blocs

0 J'aime
466 Visites
1 Réponse
Reply (1)
Message 2 sur 2

Stephane.kapetanovic
Mentor
Mentor

hi @sebastien_le-luhernT9GFY 

Il est possible de créer le cas modal par l'API et la méthode de Lanczos et d'appliquer manuellement la méthode par blocs à partir de la boite de dialogue.

 

De façon plus générale, voici un code créé pour appliquer tous les types d'algorithmes d'analyse modale définis dans l'API :

Stephanekapetanovic_0-1753333033950.png

Private Sub ApplyModalAnalysisMethod()
  Dim RobApp As RobotApplication: Set RobApp = New RobotApplication
  
  Dim DLCase As RobotSimpleCase, ModalCase As RobotSimpleCase, ModalParams As RobotModalAnalysisParams
  With RobApp.Project.Structure.Cases
    Set DLCase = .CreateSimple(1, "Dead Load", I_CN_PERMANENT, I_CAT_STATIC_LINEAR)
    For Each MethodTyp In Array(I_MAA_BLOCK_SUBSPACE_ITERATION, I_MAA_SUBSPACE_ITERATION, I_MAA_LANCZOS, _
                                I_MAA_BASE_REDUCTION, I_MAA_PCG_RITZ, I_MAA_PCG)
      Set ModalCase = .CreateSimple(.FreeNumber, "Modal", I_CN_EXPLOATATION, I_CAT_DYNAMIC_MODAL)
      Set ModalParams = ModalCase.GetAnalysisParams
          ModalParams.Method = MethodTyp
      ModalCase.SetAnalysisParams ModalParams
    Next
  End With
End Sub

résultat ↓

Stephanekapetanovic_2-1753278374831.png 

une autre approche peut consister à appliquer manuellement tous les types d'algorithme de la boite de dialogue et d'en retrouver la valeur par l'API

Stephanekapetanovic_1-1753331041455.png

Private Sub GetModalAnalysisMethod()
  Dim RobApp As RobotApplication: Set RobApp = New RobotApplication
  Dim ModalCase As RobotSimpleCase, ModalParams As RobotModalAnalysisParams
  Dim AnalysisAlgorithm As IRobotModalAnalysisAlgorithm
  For i = 2 To 6
    Set ModalCase = RobApp.Project.Structure.Cases.Get(i)
    Set ModalParams = ModalCase.GetAnalysisParams
    On Error Resume Next
      AnalysisAlgorithm = ModalParams.Method
      Debug.Print i, AnalysisAlgorithm
    On Error GoTo 0
  Next
End Sub

résultat ↓

Stephanekapetanovic_3-1753280458406.png

En résumé, en écriture, l'enum de l'API est antérieure à la boite de dialogue et en lecture, la variable Method est plus restrictive que l'enum.

Cdt

Stéphane Kapetanovic

Did you find this post helpful? If it gave you one or more solutions,
don't forget to accept the solution and leave a < like !
EESignature
0 J'aime