* TOPORESO PROCEDUR FD218221 23/11/29 21:15:13 11799 * TOPORESO PROCEDUR CB215821 21/04/22 14:10:01 9715 ************************************************************************ ** Procedure called by TOPOPTIM for solving the FE problem(s). ** ** Author: ** Guenhael Le Quilliec (LaMe - Polytech Tours) ** ** Version: ** 2.0 2021/04/22 Making the procedure compatible with Cast3M-2020 ** for linear resolution with thermo-mechanical loading ** 1.0 2021/04/15 ************************************************************************ DEBP TOPORESO tab0*'TABLE' ; * Input data * ********** wtab0 = tab0.'WTABLE' ; bool0 = wtab0.'BOOL' ; mcn0 = bool0.'MECANISME' ; mshA = wtab0.'MAILLAGE'.'A' ; load0 = wtab0.'CHARGEMENT' ; SI bool0.'MECANIQUE' ; modMA = wtab0.'MECANIQUE'.'MODELE'.'A' ; matMA = wtab0.'MECANIQUE'.'CARACTERISTIQUES'.'A' ; bcM0 = wtab0.'MECANIQUE'.'BLOCAGES' ; modA = modA ET modMA ; matA = matA ET matMA ; loadM0 = wtab0.'MECANIQUE'.'CHARGEMENT' ; FINS ; SI bool0.'THERMIQUE' ; modTA = wtab0.'THERMIQUE'.'MODELE'.'A' ; matTA = wtab0.'THERMIQUE'.'CARACTERISTIQUES'.'A' ; bcT0 = wtab0.'THERMIQUE'.'BLOCAGES' ; modA = modA ET modTA ; matA = matA ET matTA ; loadT0 = wtab0.'THERMIQUE'.'CHARGEMENT' ; FINS ; SI bool0.'CONTACT' ; modA = modA ET wtab0.'CONTACT'.'MODELE'.'A' ; matA = matA ET wtab0.'CONTACT'.'CARACTERISTIQUES'.'A' ; FINS ; * Solve FE problem(s) * ******************* SI bool0.'CAS_MULTIPLES' ; FINS ; case_nb0 = wtab0.'NB_CAS' ; REPE loop0 case_nb0 ; SI bool0.'MECANIQUE' ; mdlA.&loop0.'BLOCAGES_MECANIQUES' = bcM0.&loop0 ; FINS ; SI bool0.'THERMIQUE' ; mdlA.&loop0.'BLOCAGES_THERMIQUES' = bcT0.&loop0 ; FINS ; mdlA.&loop0.'CHARGEMENT' = load0.&loop0 ; mdlA.&loop0.'MODELE' = modA ; mdlA.&loop0.'CARACTERISTIQUES' = matA ; SI mcn0 ; FINS ; MENA 'OBLI' ; mdlA.&loop0.'TEMPS_SAUVES' = wtab0.'TEMPS_SAUVES' ; SI mcn0 ; mdlA.&loop0.'MECANISME_ENTREE'.'RIGIDITE_CONSTANTE' = wtab0.'RESSORTS'.&loop0 ; mdlA.&loop0.'MECANISME_SORTIE'.'CHARGEMENT' = wtab0.'MECANISME'.&loop0 ; MESS '| |' ; MESS '| |' ; MESS '| Resolution Mecanisme Entree |' ; MESS '| |' ; MESS '| |' ; MESS '| |' ; MESS '| Resolution Mecanisme Sortie |' ; MESS '| |' ; FINS ; SI (((NON mcn0) ET bool0.'MECANIQUE') OU (mcn0 ET (tab0.'MECANISME_ZERO_SPRING' OU ((ABS tab0.'POIDS_ENERGIE_DEFO') > tab0.'PRECISION')))) ; MESS '| |' ; MESS '| |' ; SI mcn0 ; MESS '| Resolution Sans Ressorts |'; FINS ; MESS '| |' ; FINS ; SINO ; SI bool0.'MECANIQUE' ; SI mcn0 ; tmp1 = tmp0 ET wtab0.'RESSORTS'.&loop0 ; mdlA.&loop0.'MECANISME_ENTREE'.'DEPLACEMENTS'= tmp2 ; mdlA.&loop0.'MECANISME_SORTIE'.'DEPLACEMENTS'= tmp2 ; FINS ; SI ((NON mcn0) OU (mcn0 ET (tab0.'MECANISME_ZERO_SPRING' OU ((ABS tab0.'POIDS_ENERGIE_DEFO') > tab0.'PRECISION')))) ; mdlA.&loop0.'DEPLACEMENTS' = tmp0 ; FINS ; FINS ; SI bool0.'THERMIQUE' ; loadT0.&loop0 ; FINS ; FINS ; FIN loop0 ; FINS ; SINO ; mdlA.'MODELE' = modA ; mdlA.'CARACTERISTIQUES' = matA ; SI mcn0 ; FINS ; MENA 'OBLI' ; mdlA.'TEMPS_SAUVES' = wtab0.'TEMPS_SAUVES' ; SI mcn0 ; mdlA.'MECANISME_ENTREE'.'RIGIDITE_CONSTANTE' = wtab0.'RESSORTS' ; mdlA.'MECANISME_SORTIE'.'CHARGEMENT' = wtab0.'MECANISME' ; MESS '| |' ; MESS '| |' ; MESS '| Resolution Mecanisme Entree |' ; MESS '| |' ; MESS '| |' ; MESS '| |' ; MESS '| Resolution Mecanisme Sortie |' ; MESS '| |' ; FINS ; SI (((NON mcn0) ET bool0.'MECANIQUE') OU (mcn0 ET (tab0.'MECANISME_ZERO_SPRING' OU ((ABS tab0.'POIDS_ENERGIE_DEFO') > tab0.'PRECISION')))) ; SI mcn0 ; MESS '| |' ; MESS '| |' ; MESS '| Resolution Sans Ressorts |' ; MESS '| |' ; FINS ; PASAPAS mdlA ; FINS ; SINO ; SI bool0.'MECANIQUE' ; SI mcn0 ; tmp1 = tmp0 ET wtab0.'RESSORTS' ; mdlA.'MECANISME_ENTREE'.'DEPLACEMENTS' = tmp2 ; mdlA.'MECANISME_SORTIE'.'DEPLACEMENTS' = tmp2 ; FINS ; SI ((NON mcn0) OU (mcn0 ET (tab0.'MECANISME_ZERO_SPRING' OU ((ABS tab0.'POIDS_ENERGIE_DEFO') > tab0.'PRECISION')))) ; mdlA.'DEPLACEMENTS' = tmp0 ; FINS ; FINS ; SI bool0.'THERMIQUE' ; FINS ; FINS ; FINS ; * Output data * *********** * Save the resolution table wtab0.'RESOLUTION'.'A' = mdlA ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales