[Gmsh] gmsh/bamg - use of bgm posfiles???
trophime
christophe.trophime at lncmi.cnrs.fr
Mon Jan 30 14:20:15 CET 2012
On Mon, 2012-01-30 at 11:53 +0100, trophime wrote:
> On Fri, 2012-01-27 at 17:53 +0100, Christophe Geuzaine wrote:
> > On 27 Jan 2012, at 17:46, trophime wrote:
> >
> > > On Fri, 2012-01-27 at 17:28 +0100, Cécile CD. DAVERSIN wrote:
> > >> Hi
> > >> I would like tu use bamg algo to get an anisotropic mesh.
> > >> I wish to use a metric as a background mesh and generate the
> > >> anistropic mesh from it :
> > >>
> > >> gmsh -2 geofile -algo bamg -bgm metrics.pos
> > >>
> > >>
> > >
> > > Using a bgm in this context does not work.
> > >
> > > *) The bgm file is always treated as "isotropic" :
> > >
> > > in void PostViewField::operator() (double x, double y, double z,
> > > SMetric3 &metr, GEntity *ge=0) :
> > > virtual bool PostViewField::isotropic () const always return true
> > > as v is null!
> > >
> > > *) the bgm is not taken into account. In fact it tries to
> > > get a metric from some """formula""" (see BGM_MeshMetric)
> > > just like in http://www.geuz.org/pipermail/gmsh/2012/006970.html
> > >
> > > It would be really great if we can use bgm metrics...
> > >
> >
> > Hi Christophe - I coded this in a hurry and did not have time to test it... I've committed a small patch: can you try again?
>
> Ok now PostViewField::isotropic () returns the "right" value in case of
> anisotropic metric bgm. Thanks
>
> However my metrics seems not not to be read properly.
> I don't know why yet.
>
> Moreover I have question :
> when using metrics you adapt the mesh using the intersection of the
> metric M1 read from the bgm and a "default" isotropic metric M2 derived
> from lc mesh characteristics.
> * Why do you use the max eigenvalues of M1 and M2 instead of the
> eigenvalues of M1^{-1} M2?
see :
SMetric3 intersection (const SMetric3 &m1, const SMetric3 &m2)
{
SMetric3 im1 = m1.invert();
fullMatrix<double> V(3,3);
fullVector<double> S(3);
im1 *= m2;
im1.eig(V,S,true);
SVector3 v0(V(0,0),V(1,0),V(2,0));
SVector3 v1(V(0,1),V(1,1),V(2,1));
SVector3 v2(V(0,2),V(1,2),V(2,2));
double l0 = std::max(dot(v0,m1,v0),dot(v0,m2,v0)); ??
double l1 = std::max(dot(v1,m1,v1),dot(v1,m2,v1)); ??
double l2 = std::max(dot(v2,m1,v2),dot(v2,m2,v2)); ??
SMetric3 iv(l0,l1,l2,v0,v1,v2);
return iv;
}
> * Is it possible to just use M1?
I just try using M1 (ie the one I provide in the bgm file)
I end-up with the following mesh (see the attached picture : right mesh
is the initial mesh, left mesh is the adapted mesh). It seems that gmsh
has trouble "reading" ("interpolating") some values in
bool OctreePost::_getValue(void *in, int dim, int nbNod, int nbComp,
double P[3], int step, double *values,
double *elementSize)
C.
>
> C.
>
> >
> > > Best
> > > C
> > >
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > gmsh mailing list
> > > gmsh at geuz.org
> > > http://www.geuz.org/mailman/listinfo/gmsh
> >
>
>
>
> _______________________________________________
> gmsh mailing list
> gmsh at geuz.org
> http://www.geuz.org/mailman/listinfo/gmsh
-------------- next part --------------
A non-text attachment was scrubbed...
Name: anisotropic-adapt.png
Type: image/png
Size: 136405 bytes
Desc: not available
URL: <http://www.geuz.org/pipermail/gmsh/attachments/20120130/66b60e9c/attachment.png>