22/11/04  
 

Rien

Rien

Amélioration du lissage de mailles surfaciques: j'ai modifié les méthodes de lissage 2D pour qu'elles fonctionnent également pour des surfaces 3D. Ca permet, par exemple, d'utiliser le lissage isoparametrique itératif pour des surfaces maillées de manière non uniformes et récupérer un maillage lissé non uniforme bien foutu.

 

 

Amélioration des mailleurs 1D:

ellength = PieceWiseLinearFunction()
ellength.setdata(0,0.1)
ellength.setdata(0.29,0.1)
ellength.setdata(0.3,0.01)
ellength.setdata(0.5,0.01)
ellength.setdata(0.51,0.1)
ellength.setdata(1,0.2)

mesher = DensityMesher1D(curset(1), ellength)
mesher.execute()
mesher = DensityMesher1D(curset(3), ellength); mesher.reverseOn()
mesher.execute()

 

 

 

Prise en charge des fonctions interprétées python comme "OneParameterFunction" :

L'idée est simple : pouvoir faire passer une fonction python (ou tout objet appelable - voir plus loin) comme OneParameterFunction.

Ceci permet de :

Ce que j'ai fait:

Pour quelques exemples simples, voir doc

Autre application: mon nouveau mailleur: on utilise une densité sinusoïdale:

def ellengthfct(s):
     return 0.02*math.sin(5*s*math.pi)+0.03;
ellength = PythonOneParameterFunction(ellengthfct)
mesher = DensityMesher1D(curset(1), ellength) mesher.execute() mesher = DensityMesher1D(curset(3), ellength); mesher.reverseOn() mesher.execute()

Allez, un petit dernier, rien que pour vous dégouter de la puissance de python: je crée un "objet fonction" python (si, si ça existe) que je vais paramétrer entre les deux opérations de maillage pour supprimer l'appel à DensityMesher1D::reverseOn(). J'ai changé la fonction de densité en une fonction non symmétrique pour montrer que c'est pas du pipeau! A côté, les deux résultats avec et sans object.reverse=True

class SinLengthCalculator:
    def __init__(self):
        self.reverse = False
    def compute(self, s):
        s2=s;
        if(self.reverse): s2=1-s
        return 0.1*s2+0.01;
object = SinLengthCalculator() ellength = PythonOneParameterFunction(object.compute)
mesher = DensityMesher1D(curset(1), ellength) mesher.execute() mesher = DensityMesher1D(curset(3), ellength); object.reverse = True mesher.execute()

J'ai modifié cont2 pour qu'il utilise la fct rampe interprétée et un DensityMesher1D (densité constante).

 

Fichiers supprimés:

mtAle/OldSplineSurface.*
mtAle/TmReZoner.*

Fichiers ajoutés:

mtAle/LastStepReZoner.*
mtAle/Tm2DReZoner.*
mtAle/Tm3DReZoner.*
mtMeshers/SimpleMesher1D.*
mtMeshers/DensityMesher2D.*
mtPython/PythonOneParameterFunction.*

 

 

Back to Metafor web server
created :18/11/04   modified : 22/11/04
contact : r_boman_AT_yahoo.fr