* TOPOPROJ PROCEDUR FD218221 25/12/18 21:15:11 12429 ************************************************************************ ** Procedure called by TOPOPHYS for projecting the intermediate ** densities (S) to obtain the physical densities (Y) ** ** Author: ** Guenhael Le Quilliec (LaMe - Polytech Tours) ** ** Version: ** 1.0 2025/11/13 Initial version ************************************************************************ DEBP TOPOPROJ tab*'TABLE' ; * Input data * ********** Wtab = tab.'WTABLE' ; Ltab = Wtab.'LOGIQUE' ; * Intermediate (smoothed/filtered) densities to be projected SD = Wtab.'S_D' ; * Projection stiffness bta = Wtab.'PROJECTION_RAIDEUR' ; * Projection * ********** SI (bta > 0) ; modD = Wtab.'MODELE_D' ; matD = Wtab.'CARACTERISTIQUES_D' ; eta = Wtab.'PROJECTION_SEUIL' ; * Projection with a volume-preserving threshold SI Ltab.'PROJECTION_VOLUME_CONSTANT' ; * Convergence criteria Vcrt = tab0.'PROJECTION_VOLUME_CRITERE' ; etacrt = tab0.'PROJECTION_SEUIL_CRITERE' ; * Bounds of the threshold eta1 = 0.0 ; eta2 = 1.0 ; * Initial volume to be preserved * Bisection algorithm REPE loop0 tab0.'PROJECTION_MAX_IT' ; YD = TOPOFONC tab.'PROJECTION' 'VALEUR' SD bta eta ; * Test convergence SI (((ABS ((YVtotD / SVtotD) - 1.0)) < Vcrt) OU (((eta2 - eta1) / (eta1 + eta2)) < etacrt)) ; QUIT loop0 ; FINS ; * Update threshold bounds SI (YVtotD > SVtotD) ; eta1 = eta ; SINO ; eta2 = eta ; FINS ; * Compute new threshold eta = 0.5 * (eta1 + eta2) ; FIN loop0 ; * Save final treshold Wtab.'PROJECTION_SEUIL' = eta ; * Or simple projection with a fixed threshold SINO ; eta = Wtab.'PROJECTION_SEUIL' ; YD = TOPOFONC tab.'PROJECTION' 'VALEUR' SD bta eta ; FINS ; SINO ; YD = SD ; FINS ; * Output data * *********** * Projected physical densities (Y) Wtab.'Y_D' = YD ; FINP ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales