* TOPOLOGY PROCEDUR FD218221 23/11/29 21:15:10 11799 * TOPOLOGY PROCEDUR CB215821 21/03/19 21:15:10 9715 ************************************************************************ ** Procedure called by TOPOPTIM for updating the topology using the ** Optimality Criterion method. ** ** Author: ** Guenhael Le Quilliec (LaMe - Polytech Tours) ** ** Version: ** 2.2 2021/03/19 Modification of default value of 'OC_L2' ** 2.1 2018/01/29 Fixing an issue with quadratic elements ** 2.0 2017/11/11 ************************************************************************ DEBP TOPOLOGY tab0*'TABLE' ; * Input data * ********** wtab0 = tab0.'WTABLE' ; bool0 = wtab0.'BOOL' ; un1 = wtab0.'UN'.(1) ; d0 = wtab0.'FACTEUR_D' ; move0 = un1 * tab0.'TOPOLOGIE_MAX_INC' ; void0 = tab0.'TOPOLOGIE_MIN' ; xOld0 = wtab0.'TOPOLOGIE' ; xOldP0 = xOld0 + move0 ; xOldM0 = xOld0 - move0 ; dc0 = wtab0.'SENSIBILITE' ; q0 = wtab0.'FACTEUR_Q' ; qbool0 = q0 > 1 ; *** mcn0 = bool0.'MECANISME' ; SI bool0.'MECANIQUE' ; mod1 = wtab0.'MECANIQUE'.'MODELE'.(1) ; mat1 = wtab0.'MECANIQUE'.'CARACTERISTIQUES'.(1) ; SINO ; mod1 = wtab0.'THERMIQUE'.'MODELE'.(1) ; mat1 = wtab0.'THERMIQUE'.'CARACTERISTIQUES'.(1) ; FINS ; v1 = wtab0.'VOLUME'.(1) * tab0.'FRACTION_VOLUME' ; l1 = tab0.'OC_L1' ; SINO ; l2 = tab0.'OC_L2' ; FINS ; l2min = tab0.'OC_L2_MIN' ; crit0 = tab0.'OC_CRITERE' ; maxit0 = tab0.'OC_MAX_IT' ; **** SI mcn0 ; bmin0 = tab0.'OC_B_MIN' ; **** FINS ; * Update the topology * ******************* REPE loop0 maxit0 ; SI ((((l2 - l1) / (l1 + l2)) > crit0) ET (l2 > l2min)) ; lmid0 = 0.5 * (l2 + l1) ; Be0 = dc0 * (-1.0 / lmid0) ; * Negative values does not only happen for compliant * mechanism synthesis but also for elastic strain energy * minimization with quadratic elements **** SI mcn0 ; **** FINS ; x0 = xOld0 * (Be0**d0) ; SI qbool0 ; x0 = x0**q0 ; FINS ; * Bound x0 (void0<x0<1 and Abs(x0-xOld0)<move0) x0 = (x0 * mask0) - (xOldP0 * (mask0 - un1)) ; x0 = (x0 * mask0) - (xOldM0 * (mask0 - un1)) ; * New bound of the Lagrange multiplier l1 = lmid0 ; SINO ; l2 = lmid0 ; FINS ; SINO ; QUIT loop0 ; FINS ; FIN loop0 ; * Save the new topology wtab0.'TOPOLOGIE' = x0 ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales