Changeset 3217


Ignore:
Timestamp:
03/08/10 14:48:30 (15 years ago)
Author:
Mathieu Morlighem
Message:

now mesh in and mesh_out are 2 different objects

Location:
issm/trunk/src/c/Bamgx
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Bamgx/Bamgx.cpp

    r3148 r3217  
    2323using namespace std;
    2424
    25 int Bamgx(BamgMesh* bamgmesh,BamgGeom* bamggeom,BamgOpts* bamgopts){
     25int Bamgx(BamgMesh* bamgmesh_out,BamgGeom* bamggeom_out,BamgMesh* bamgmesh_in,BamgGeom* bamggeom_in,BamgOpts* bamgopts){
    2626
    2727        /*Bamg options*/
     
    6666        /*If no mesh in input, generate one*/
    6767
    68         if(bamgmesh->NumTriangles==0){
     68        if(bamgmesh_in->NumTriangles==0){
    6969                /*Mesh generation {{{1*/
    7070
    7171                if (verbosity>0) printf("Construction of a mesh from a given geometry\n");
    7272                if (verbosity>1) printf("   Processing geometry...\n");
    73                 Geometry Gh(bamggeom,bamgopts);
     73                Geometry Gh(bamggeom_in,bamgopts);
    7474                if (verbosity>10){
    7575                        Gh.Echo();
     
    9898                //Build output
    9999                if (verbosity>1) printf("   Write Mesh...\n");
    100                 Th.WriteMesh(bamgmesh,bamgopts);
     100                Th.WriteMesh(bamgmesh_out,bamgopts);
    101101                if (verbosity>1) printf("   Write Geometry...\n");
    102                 Gh.WriteGeometry(bamggeom,bamgopts);
     102                Gh.WriteGeometry(bamggeom_out,bamgopts);
    103103
    104104                //clean up
     
    114114                if (verbosity>0) printf("Anisotropic mesh adaptation\n");
    115115                if (verbosity>1) printf("   Processing initial mesh and geometry...\n");
    116                 Triangles BTh(bamgmesh,bamgopts);
     116                Triangles BTh(bamgmesh_in,bamgopts);
    117117                hmin = Max(hmin,BTh.MinimalHmin());
    118118                hmax = Min(hmax,BTh.MaximalHmax());
     
    132132                        for (Int4 iv=0;iv<BTh.nbv;iv++) BTh[iv].m = Mhmax;
    133133                        // change using hVertices if required
    134                         if (bamgmesh->hVertices){
     134                        if (bamgmesh_in->hVertices){
    135135                                for (i=0;i<BTh.nbv;i++){
    136                                         if (!isnan(bamgmesh->hVertices[i])){
    137                                                 BTh[i].m=Metric((Real4)bamgmesh->hVertices[i]);
     136                                        if (!isnan(bamgmesh_in->hVertices[i])){
     137                                                BTh[i].m=Metric((Real4)bamgmesh_in->hVertices[i]);
    138138                                        }
    139139                                }
     
    177177                //Build output
    178178                if (verbosity>1) printf("   Write Mesh...\n");
    179                 Th.WriteMesh(bamgmesh,bamgopts);
     179                Th.WriteMesh(bamgmesh_out,bamgopts);
    180180                if (verbosity>1) printf("   Write Geometry...\n");
    181                 Th.Gh.WriteGeometry(bamggeom,bamgopts);
     181                Th.Gh.WriteGeometry(bamggeom_out,bamgopts);
    182182                if (verbosity>1) printf("   Write Metric...\n");
    183183                BTh.WriteMetric(bamgopts);
  • issm/trunk/src/c/Bamgx/Bamgx.h

    r2865 r3217  
    99
    1010/* local prototypes: */
    11 int     Bamgx(BamgMesh* bamgmesh,BamgGeom* bamggeom,BamgOpts* bamgopts);
     11int     Bamgx(BamgMesh* bamgmesh_out,BamgGeom* bamggeom_out,BamgMesh* bamgmesh_in,BamgGeom* bamggeom_in,BamgOpts* bamgopts);
    1212
    1313#endif  /* _BAMGX_H */
  • issm/trunk/src/c/Bamgx/objects/Geometry.cpp

    r3031 r3217  
    7474                int i,count;
    7575
     76                /*Get options*/
    7677                verbose=bamgopts->verbose;
     78
     79                /*Initialize output*/
     80                BamgGeomInit(bamggeom);
    7781
    7882                //Vertices
    7983                if(verbose>5) printf("      writing Vertices\n");
    8084                bamggeom->NumVertices=nbv;
    81                 xfree((void**)&bamggeom->Vertices);
    8285                if (nbv){
    8386                        bamggeom->Vertices=(double*)xmalloc(3*nbv*sizeof(double));
     
    98101                if(verbose>5) printf("      writing Edges\n");
    99102                bamggeom->NumEdges=nbe;
    100                 xfree((void**)&bamggeom->Edges);
    101103                if (nbe){
    102104                        bamggeom->Edges=(double*)xmalloc(3*nbe*sizeof(double));
     
    123125                if(verbose>5) printf("      writing CrackedEdges\n");
    124126                bamggeom->NumCrackedEdges=nbcracked;
    125                 xfree((void**)&bamggeom->CrackedEdges);
    126127                if (nbcracked){
    127128                        bamggeom->CrackedEdges=(double*)xmalloc(2*nbcracked*sizeof(double));
     
    144145                if(verbose>5) printf("      writing RequiredEdges\n");
    145146                bamggeom->NumRequiredEdges=nbreq;
    146                 xfree((void**)&bamggeom->RequiredEdges);
    147147                if (nbreq){
    148148                        bamggeom->RequiredEdges=(double*)xmalloc(1*nbreq*sizeof(double));
     
    164164                if(verbose>5) printf("      writing RequiredVertices\n");
    165165                bamggeom->NumRequiredVertices=nbreqv;
    166                 xfree((void**)&bamggeom->RequiredVertices);
    167166                if (nbreqv){
    168167                        bamggeom->RequiredVertices=(double*)xmalloc(1*nbreqv*sizeof(double));
     
    182181                if(verbose>5) printf("      writing SubDomains\n");
    183182                bamggeom->NumSubDomains=NbSubDomains;
    184                 xfree((void**)&bamggeom->SubDomains);
    185183                if (NbSubDomains){
    186184                        bamggeom->SubDomains=(double*)xmalloc(4*NbSubDomains*sizeof(double));
     
    199197                if(verbose>5) printf("      writing TangentAtEdges\n");
    200198                bamggeom->NumTangentAtEdges=nbtan;
    201                 xfree((void**)&bamggeom->TangentAtEdges);
    202199                if (nbtan){
    203200                        bamggeom->TangentAtEdges=(double*)xmalloc(4*nbtan*sizeof(double));
  • issm/trunk/src/c/Bamgx/objects/Triangles.cpp

    r3148 r3217  
    536536
    537537                int i,j,k,num;
     538                /*Get options*/
    538539                int verbose=bamgopts->verbose;
     540
     541                /*Initialize output*/
     542                BamgMeshInit(bamgmesh);
     543
    539544
    540545                //renumber
     
    552557                if(verbose>5) printf("      writing Vertices\n");
    553558                bamgmesh->NumVertices=nbv;
    554                 xfree((void**)&bamgmesh->Vertices);
    555559                if (nbv){
    556560                        bamgmesh->Vertices=(double*)xmalloc(3*nbv*sizeof(double));
     
    568572                if(verbose>5) printf("      writing Edges\n");
    569573                bamgmesh->NumEdges=nbe;
    570                 xfree((void**)&bamgmesh->Edges);
    571574                int NumSegments=0;
    572575                if (nbe){
     
    609612                        }
    610613                }
    611                 xfree((void**)&bamgmesh->Segments);
    612                 xfree((void**)&bamgmesh->SegmentsMarkers);
    613614                bamgmesh->NumSegments=NumSegments;
    614615                bamgmesh->Segments=(double*)xmalloc(3*NumSegments*sizeof(double));
     
    658659                if(verbose>5) printf("      writing CrackedEdges\n");
    659660                bamgmesh->NumCrackedEdges=NbCrackedEdges;
    660                 xfree((void**)&bamgmesh->CrackedEdges);
    661661                if (NbCrackedEdges){
    662662                        bamgmesh->CrackedEdges=(double*)xmalloc(2*NbCrackedEdges*sizeof(double));
     
    675675                num=0;
    676676                bamgmesh->NumTriangles=k;
    677                 xfree((void**)&bamgmesh->Triangles);
    678677                if (k){
    679678                        bamgmesh->Triangles=(double*)xmalloc(4*k*sizeof(double));
     
    697696                if(verbose>5) printf("      writing Quadrilaterals\n");
    698697                bamgmesh->NumQuadrilaterals=NbOfQuad;
    699                 xfree((void**)&bamgmesh->Quadrilaterals);
    700698                if (NbOfQuad){
    701699                        bamgmesh->Quadrilaterals=(double*)xmalloc(5*NbOfQuad*sizeof(double));
     
    721719                if(verbose>5) printf("      writing SubDomains\n");
    722720                bamgmesh->NumSubDomains=NbSubDomains;
    723                 xfree((void**)&bamgmesh->SubDomains);
    724721                if (NbSubDomains){
    725722                        bamgmesh->SubDomains=(double*)xmalloc(4*NbSubDomains*sizeof(double));
     
    738735                if(verbose>5) printf("      writing SubDomainsFromGeom\n");
    739736                bamgmesh->NumSubDomainsFromGeom=Gh.NbSubDomains;
    740                 xfree((void**)&bamgmesh->SubDomainsFromGeom);
    741737                if (Gh.NbSubDomains){
    742738                        bamgmesh->SubDomainsFromGeom=(double*)xmalloc(4*Gh.NbSubDomains*sizeof(double));
     
    755751                if(verbose>5) printf("      writing VerticesOnGeometricVertex\n");
    756752                bamgmesh->NumVerticesOnGeometricVertex=NbVerticesOnGeomVertex;
    757                 xfree((void**)&bamgmesh->VerticesOnGeometricVertex);
    758753                if (NbVerticesOnGeomVertex){
    759754                        bamgmesh->VerticesOnGeometricVertex=(double*)xmalloc(2*NbVerticesOnGeomVertex*sizeof(double));
     
    774769                if(verbose>5) printf("      writing VerticesOnGeometricEdge\n");
    775770                bamgmesh->NumVerticesOnGeometricEdge=NbVerticesOnGeomEdge;
    776                 xfree((void**)&bamgmesh->VerticesOnGeometricEdge);
    777771                if (NbVerticesOnGeomEdge){
    778772                        bamgmesh->VerticesOnGeometricEdge=(double*)xmalloc(3*NbVerticesOnGeomEdge*sizeof(double));
     
    798792                }
    799793                bamgmesh->NumEdgesOnGeometricEdge=k;
    800                 xfree((void**)&bamgmesh->EdgesOnGeometricEdge);
    801794                if (k){
    802795                        bamgmesh->EdgesOnGeometricEdge=(double*)xmalloc(2*(int)k*sizeof(double));
Note: See TracChangeset for help on using the changeset viewer.