source: issm/oecreview/Archive/20545-21336/ISSM-20882-20883.diff@ 21337

Last change on this file since 21337 was 21337, checked in by Mathieu Morlighem, 8 years ago

CHG: added Archive/20545-21336

File size: 27.5 KB
  • ../trunk-jpl/src/m/extrusion/project2d.js

     
     1function project2d(md3d,value,layer) {
     2    // PROJECT2D - returns the value of a field for a given layer of the mesh
     3    //
     4    //    returns the value of a vector for a given layer from extruded mesh onto the 2d mesh
     5    //    used to do the extrusion. This function is used to compare values between different
     6    //    layers of a 3d mesh.
     7    //
     8    //    Usage:
     9    //       projection_value=project2d(md3d,value,layer)
     10    //
     11    //    Example:
     12    //       vel2=project2d(md3d,md3d.initialization.vel,2);
     13    //       returns the velocity of the second layer (1 is the base)
     14
     15    // some checks on list of arguments
     16    if (arguments.length !== 3) {
     17        console.error('project2d error message');
     18    }
     19
     20    if (md3d.mesh.domaintype() !== '3D') {
     21        console.error("wrong model type ... should be ''3d''");
     22    }
     23
     24    if (layer<1 || layer>md3d.mesh.numberoflayers) {
     25        console.error(['layer must be between 1 and ' + num2str(md3d.mesh.numberoflayers)]);
     26    }
     27
     28    // Return the projection value
     29    var temp = [];
     30    if (value.length === md3d.mesh.numberofvertices) {
     31        for (var i = (layer-1)*md3d.mesh.numberofvertices2d; i <= layer*md3d.mesh.numberofvertices2d; ++i) {
     32            temp.push(value[i]);
     33        }
     34    } else if (value.length === md3d.mesh.numberofvertices+1) {
     35        for (var i = (layer-1)*md3d.mesh.numberofvertices2d; i <= layer*md3d.mesh.numberofvertices2d; ++i) {
     36            temp.push(value[i]);
     37        }
     38        temp.push(value[value.length-1]);
     39    } else {
     40        for (var i = (layer-1)*md3d.mesh.numberofelements; i <= layer*md3d.mesh.numberofelements2d; ++i) {
     41            temp.push(value[i]);
     42        }
     43    }
     44
     45    return temp;
     46}
  • ../trunk-jpl/src/m/extrusion/DepthAverage.js

     
     1function DepthAverage(md,vector) {
     2    // DEPTHAVERAGE - computes depth average of 3d vector using the trapezoidal rule, and returns the value on 2d mesh.
     3    //
     4    //    Usage:
     5    //       vector_average=DepthAverage(md,vector);
     6    //
     7    //    Example:
     8    //       vel_bar=DepthAverage(md,md.initialization.vel);
     9
     10    // check that the model given in input is 3d
     11    if (md.mesh.elementtype() !== 'Penta') {
     12        console.error('DepthAverage error message: the model given in input must be 3d');
     13    }
     14
     15    // nods data
     16    if (vector.length === md.mesh.numberofvertices) {
     17        var vector_average=zeros(md.mesh.numberofvertices2d,1);
     18
     19        for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
     20            vector_average = vector_average.map(function(x) {
     21                return x + (project2d(md, vector, i) + project2d(md,vector,i+1))/2;
     22            }).map(function(y) {
     23                return y * (project2d(md, md.mesh.z, i+1) - project2d(md, md.mesh.z, i));
     24            });
     25        }
     26
     27        vector_average = vector_average.map(function(z) {
     28            return z / project2d(md, md.geometry.thickness, 1);
     29        });
     30
     31        return vector_average;
     32    }
     33    // element data
     34    else if (vector.length === md.mesh.numberofelements) {
     35        var vector_average=zeros(md.mesh.numberofelements2d,1);
     36        for (var i = 1; i < md.mesh.numberoflayers-1; ++i) {
     37            vector_average = vector_average.map(function(x) {
     38                return x + project2d(md, vector, i);
     39            }).map(function(y) {
     40                return y * (project2d(md, md.mesh.z, i+1) - project2d(md, md.mesh.z, i));
     41            });
     42        }
     43
     44        vector_average = vector_average.map(function(z) {
     45            return z / project2d(md, md.geometry.thickness, 1);
     46        });
     47
     48        return vector_average;
     49    } else {
     50        console.error('vector size not supported yet');
     51    }
     52}
  • ../trunk-jpl/src/m/mesh/meshconvert.js

     
     1this.meshconvert = function(md,varargin)) {
     2function zeros(...args) {
     3        var array = [];
     4        for (var i = 0; i < args[0]; ++i) {
     5                array.push(args.length == 1 ? 0 : zeros(args.slice(1)));
     6        }
     7        return array;
     8}
     9var md = new model();
     10//CONVERTMESH - convert mesh to bamg mesh
     11//
     12//   Usage:
     13//      md=meshconvert(md);
     14//      md=meshconvert(md,index,x,y);
     15
     16if (nargin~=1 & nargin~=4,) {
     17        help meshconvert
     18        console.error('meshconvert error message: bad usage');
     19}
     20
     21if (nargin==1,) {
     22        index = md.mesh.elements;
     23        x     = md.mesh.x;
     24        y     = md.mesh.y;
     25} else {
     26        index = varargin[0];
     27        x     = varargin[1];
     28        y     = varargin[2];
     29}
     30
     31//call Bamg
     32[bamgmesh_out bamggeom_out]=BamgConvertMesh(index,x,y);
     33
     34// plug results onto model
     35md.private.bamg          = struct();
     36md.private.bamg.mesh     = bamgmesh(bamgmesh_out);
     37md.private.bamg.geometry = bamggeom(bamggeom_out);
     38md.mesh.x              = bamgmesh_out.Vertices(:,1);
     39md.mesh.y              = bamgmesh_out.Vertices(:,2);
     40md.mesh.elements       = bamgmesh_out.Triangles(:,1:3);
     41md.mesh.edges          = bamgmesh_out.IssmEdges;
     42md.mesh.segments       = bamgmesh_out.IssmSegments(:,1:3);
     43md.mesh.segmentmarkers = bamgmesh_out.IssmSegments(:,4);
     44
     45//Fill in rest of fields:
     46md.mesh.numberofelements = size(md.mesh.elements,1);
     47md.mesh.numberofvertices = length(md.mesh.x);
     48md.mesh.numberofedges    = size(md.mesh.edges,1);
     49md.mesh.vertexonboundary = zeros(md.mesh.numberofvertices,1); md.mesh.vertexonboundary(md.mesh.segments(:,1:2)) = 1;
  • ../trunk-jpl/src/m/classes/model.js

     
    153153
    154154                numlayers=extrusionlist.length;
    155155            } else if (argc==3) { //one polynomial law
    156                 if (arguments[2]<=0) {
     156                if (arguments[1]<=0) {
    157157                    //help extrude;
    158158                    throw 'extrusionexponent must be >=0';
    159159                }
     
    162162                extrusionlist = [];
    163163
    164164                for (var i = 0; i < numlayers; i++) {
    165                     extrusionlist.push(Math.pow(i/(numlayers-1), arguments[2]));
     165                    extrusionlist.push(Math.pow(i/(numlayers-1), arguments[1]));
    166166                };
    167167
    168168            } else if (argc==4) { //two polynomial laws
     
    264264            //lowervertex=NaN*ones(number_nodes3d,1);
    265265            //uppervertex=NaN*ones(number_nodes3d,1);
    266266
    267             lowervertex = fillArray(null, number_nodes3d);
    268             uppervertex = fillArray(null, number_nodes3d);
     267            lowervertex = fillArray(NaN, number_nodes3d);
     268            uppervertex = fillArray(NaN, number_nodes3d);
    269269
    270270            //lowervertex(md.mesh.numberofvertices+1:end)=1:(numlayers-1)*md.mesh.numberofvertices;
    271271            //uppervertex(1:(numlayers-1)*md.mesh.numberofvertices)=md.mesh.numberofvertices+1:number_nodes3d;
     
    282282            md.mesh.uppervertex=uppervertex;
    283283
    284284            //same for lower and upper elements
    285             lowerelements = fillArray(null, number_el3d);
    286             upperelements = fillArray(null, number_el3d);
     285            lowerelements = fillArray(NaN, number_el3d);
     286            upperelements = fillArray(NaN, number_el3d);
    287287            //lowerelements(md.mesh.numberofelements+1:end)=1:(numlayers-2)*md.mesh.numberofelements;
    288288            //upperelements(1:(numlayers-2)*md.mesh.numberofelements)=md.mesh.numberofelements+1:(numlayers-1)*md.mesh.numberofelements;
    289289
     
    325325            md.mesh.lat=project3d(md,'vector',md.mesh.lat,'type','node');
    326326            md.mesh.long=project3d(md,'vector',md.mesh.long,'type','node');
    327327
    328                 md.geometry=md.geometry.extrude(md);
    329                 md.friction=md.friction.extrude(md);
    330                 md.inversion=md.inversion.extrude(md);
    331                 md.smb=md.smb.extrude(md);
    332                 md.initialization=md.initialization.extrude(md);
     328                //md.geometry=md.geometry.extrude(md);
     329                //md.friction=md.friction.extrude(md);
     330                //md.inversion=md.inversion.extrude(md);
     331                //md.smb=md.smb.extrude(md);
     332                //md.initialization=md.initialization.extrude(md);
    333333
    334                 md.flowequation=md.flowequation.extrude(md);
    335                 md.stressbalance=md.stressbalance.extrude(md);
    336                 md.thermal=md.thermal.extrude(md);
    337                 md.masstransport=md.masstransport.extrude(md);
    338                 md.levelset=md.levelset.extrude(md);
    339                 md.calving=md.calving.extrude(md);
    340                 md.hydrology = md.hydrology.extrude(md);
     334                //md.flowequation=md.flowequation.extrude(md);
     335                //md.stressbalance=md.stressbalance.extrude(md);
     336                //md.thermal=md.thermal.extrude(md);
     337                //md.masstransport=md.masstransport.extrude(md);
     338                //md.levelset=md.levelset.extrude(md);
     339                //md.calving=md.calving.extrude(md);
     340                //md.hydrology = md.hydrology.extrude(md);
    341341
    342                 //connectivity
    343                 //if ~isnan(md.mesh.elementconnectivity)
     342                ////connectivity
     343                ////if ~isnan(md.mesh.elementconnectivity)
    344344
    345                 if (md.mesh.elementconnectivity.every(function(e, i, arr) { return e !== null && typeof e !== 'undefined'; })) {
    346                     var temparr = [];
    347                     for (var i = 0; i < numlayers; i++) {
    348                         temparr.push(md.mesh.elementconnectivity);
    349                     };
     345                //if (md.mesh.elementconnectivity.every(function(e, i, arr) { return e !== null && typeof e !== 'undefined'; })) {
     346                    //var temparr = [];
     347                    //for (var i = 0; i < numlayers; i++) {
     348                        //temparr.push(md.mesh.elementconnectivity);
     349                    //};
    350350
    351                     //md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
     351                    ////md.mesh.elementconnectivity=repmat(md.mesh.elementconnectivity,numlayers-1,1);
    352352
    353                     md.mesh.elementconnectivity = temparr;
     353                    //md.mesh.elementconnectivity = temparr;
    354354
    355                     //md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
     355                    ////md.mesh.elementconnectivity(find(md.mesh.elementconnectivity==0))=NaN;
    356356
    357                     for (var i = 0; i < md.mesh.elementconnectivity.length; i++) {
    358                         if (md.mesh.elementconnectivity[i] == 0) {
    359                             md.mesh.elementconnectivity[i] = NaN;
    360                         }
    361                     };
     357                    //for (var i = 0; i < md.mesh.elementconnectivity.length; i++) {
     358                        //if (md.mesh.elementconnectivity[i] == 0) {
     359                            //md.mesh.elementconnectivity[i] = NaN;
     360                        //}
     361                    //};
    362362
    363                     for (var i = 2; i < numlayers; i++) {
    364                         for (var j = (i-1)*md.mesh.nuberofelements2d+1; i <= (i)*md.mesh.numberofelements2d; i++) {
    365                             md.mesh.elementconnectivity[i] += md.mesh.numberofelements2d;
    366                         };
    367                         //md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
    368                             //=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
    369                     };
     363                    //for (var i = 2; i < numlayers; i++) {
     364                        //for (var j = (i-1)*md.mesh.nuberofelements2d+1; i <= (i)*md.mesh.numberofelements2d; i++) {
     365                            //md.mesh.elementconnectivity[i] += md.mesh.numberofelements2d;
     366                        //};
     367                        ////md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)...
     368                            ////=md.mesh.elementconnectivity((i-1)*md.mesh.numberofelements2d+1:(i)*md.mesh.numberofelements2d,:)+md.mesh.numberofelements2d;
     369                    //};
    370370
    371                     md.mesh.elementconnectivity.map(function(x) { return (isNaN(x)) ? 0 : x; });
    372                 }
     371                    //md.mesh.elementconnectivity.map(function(x) { return (isNaN(x)) ? 0 : x; });
     372                //}
    373373
    374                 md.materials=md.materials.extrude(md);
    375                 md.damage=md.damage.extrude(md);
    376                 md.mask=md.mask.extrude(md);
    377                 md.qmu=md.qmu.extrude(md);
    378                 md.basalforcings=md.basalforcings.extrude(md);
     374                //md.materials=md.materials.extrude(md);
     375                //md.damage=md.damage.extrude(md);
     376                //md.mask=md.mask.extrude(md);
     377                //md.qmu=md.qmu.extrude(md);
     378                //md.basalforcings=md.basalforcings.extrude(md);
    379379
    380                 //increase connectivity if less than 25:
    381                 if (md.mesh.average_vertex_connectivity<=25)
    382                     md.mesh.average_vertex_connectivity=100;
    383                 // }}}
     380                ////increase connectivity if less than 25:
     381                //if (md.mesh.average_vertex_connectivity<=25)
     382                    //md.mesh.average_vertex_connectivity=100;
     383        } //}}}
     384        this.collapse = function(md) {
     385            /*
     386             *COLLAPSE - collapses a 3d mesh into a 2d mesh
     387             *
     388             *   This routine collapses a 3d model into a 2d model
     389             *   and collapses all the fileds of the 3d model by
     390             *   taking their depth-averaged values
     391             *
     392             *   Usage:
     393             *     md=collapse(md)
     394             *
     395             *   See also: EXTRUDE, MODELEXTRACT
     396             */
    384397
    385         } //}}}
     398            // Check that the model is really a 3d model
     399            if (md.mesh.elementtype() !== 'Penta') {
     400                console.error('collapse error message: only 3d mesh can be collapsed')
     401            }
     402
     403            // Start with changing all the fields from the 3d mesh
     404
     405            // dealing with the friction law
     406            // drag is limited to nodes that are on the bedrock.
     407            if (md.friction.classname() === 'friction') {
     408                md.friction.coefficient=project2d(md,md.friction.coefficient,1);
     409                md.friction.p=project2d(md,md.friction.p,1);
     410                md.friction.q=project2d(md,md.friction.q,1);
     411            } else if (md.friction.classname() === 'frictionhydro') {
     412                md.friction.q=project2d(md,md.friction.q,1);
     413                md.friction.C=project2d(md,md.friction.C,1);
     414                md.friction.As=project2d(md,md.friction.As,1);
     415                md.friction.effective_pressure=project2d(md,md.friction.effective_pressure,1);
     416            } else if (md.friction.classname() === 'frictionwaterlayer') {
     417                md.friction.coefficient=project2d(md,md.friction.coefficient,1);
     418                md.friction.p=project2d(md,md.friction.p,1);
     419                md.friction.q=project2d(md,md.friction.q,1);
     420                md.friction.water_layer=project2d(md,md.friction.water_layer,1);
     421            } else if (md.friction.classname() === 'frictionweertman') {
     422                md.friction.C=project2d(md,md.friction.C,1);
     423                md.friction.m=project2d(md,md.friction.m,1);
     424            } else if (md.friction.classname() === 'frictionweertmantemp') {
     425                md.friction.C=project2d(md,md.friction.C,1);
     426                md.friction.m=project2d(md,md.friction.m,1);
     427            } else {
     428                disp('friction type not supported');
     429            }
     430
     431            // observations
     432            if (!isNaN(md.inversion.vx_obs))
     433                md.inversion.vx_obs=project2d(md,md.inversion.vx_obs,md.mesh.numberoflayers);
     434
     435            if (!isNaN(md.inversion.vy_obs))
     436                md.inversion.vy_obs=project2d(md,md.inversion.vy_obs,md.mesh.numberoflayers);
     437
     438            if (!isNaN(md.inversion.vel_obs))
     439                md.inversion.vel_obs=project2d(md,md.inversion.vel_obs,md.mesh.numberoflayers);
     440
     441            if (!isNaN(md.inversion.cost_functions_coefficients))
     442                md.inversion.cost_functions_coefficients=project2d(md,md.inversion.cost_functions_coefficients,md.mesh.numberoflayers);
     443
     444            if (numel(md.inversion.min_parameters)>1)
     445                md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers);
     446
     447            if (numel(md.inversion.max_parameters)>1)
     448                md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers);
     449
     450            if (md.smb.classname() === 'SMBforcing' && !isNaN(md.smb.mass_balance)) {
     451                md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers);
     452            } else if (md.smb.classname() === 'SMBhenning' && !isNaN(md.smb.smbref)) {
     453                md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
     454            }
     455
     456            // results
     457            if (!isNaN(md.initialization.vx))
     458                md.initialization.vx=DepthAverage(md,md.initialization.vx);
     459            if (!isNaN(md.initialization.vy))
     460                md.initialization.vy=DepthAverage(md,md.initialization.vy);
     461            if (!isNaN(md.initialization.vz))
     462                md.initialization.vz=DepthAverage(md,md.initialization.vz);
     463            if (!isNaN(md.initialization.vel))
     464                md.initialization.vel=DepthAverage(md,md.initialization.vel);
     465            if (!isNaN(md.initialization.temperature))
     466                md.initialization.temperature=DepthAverage(md,md.initialization.temperature);
     467            if (!isNaN(md.initialization.pressure))
     468                md.initialization.pressure=project2d(md,md.initialization.pressure,1);
     469            if (!isNaN(md.initialization.sediment_head))
     470                md.initialization.sediment_head=project2d(md,md.initialization.sediment_head,1);
     471            if (!isNaN(md.initialization.epl_head))
     472                md.initialization.epl_head=project2d(md,md.initialization.epl_head,1);
     473            if (!isNaN(md.initialization.epl_thickness))
     474                md.initialization.epl_thickness=project2d(md,md.initialization.epl_thickness,1);
     475
     476            // gia
     477            if (!isNaN(md.gia.mantle_viscosity))
     478                md.gia.mantle_viscosity=project2d(md,md.gia.mantle_viscosity,1);
     479            if (!isNaN(md.gia.lithosphere_thickness))
     480                md.gia.lithosphere_thickness=project2d(md,md.gia.lithosphere_thickness,1);
     481
     482            // elementstype
     483            if (!isNaN(md.flowequation.element_equation)) {
     484                md.flowequation.element_equation=project2d(md,md.flowequation.element_equation,1);
     485                md.flowequation.vertex_equation=project2d(md,md.flowequation.vertex_equation,1);
     486                md.flowequation.borderSSA=project2d(md,md.flowequation.borderSSA,1);
     487                md.flowequation.borderHO=project2d(md,md.flowequation.borderHO,1);
     488                md.flowequation.borderFS=project2d(md,md.flowequation.borderFS,1);
     489            }
     490
     491            // boundary conditions
     492            md.stressbalance.spcvx=project2d(md,md.stressbalance.spcvx,md.mesh.numberoflayers);
     493            md.stressbalance.spcvy=project2d(md,md.stressbalance.spcvy,md.mesh.numberoflayers);
     494            md.stressbalance.spcvz=project2d(md,md.stressbalance.spcvz,md.mesh.numberoflayers);
     495            md.stressbalance.referential=project2d(md,md.stressbalance.referential,md.mesh.numberoflayers);
     496            md.stressbalance.loadingforce=project2d(md,md.stressbalance.loadingforce,md.mesh.numberoflayers);
     497            md.masstransport.spcthickness=project2d(md,md.masstransport.spcthickness,md.mesh.numberoflayers);
     498            if (!isNaN(md.damage.spcdamage))
     499                md.damage.spcdamage=project2d(md,md.damage.spcdamage,md.mesh.numberoflayers);
     500            md.thermal.spctemperature=project2d(md,md.thermal.spctemperature,md.mesh.numberoflayers);
     501
     502            // Hydrologydc variables
     503            if (md.hydrology.classname() === 'hydrologydc') {
     504                md.hydrology.spcsediment_head=project2d(md,md.hydrology.spcsediment_head,1);
     505                md.hydrology.mask_eplactive_node=project2d(md,md.hydrology.mask_eplactive_node,1);
     506                md.hydrology.sediment_transmitivity=project2d(md,md.hydrology.sediment_transmitivity,1);
     507                md.hydrology.basal_moulin_input=project2d(md,md.hydrology.basal_moulin_input,1);
     508
     509                if(md.hydrology.isefficientlayer==1)
     510                    md.hydrology.spcepl_head=project2d(md,md.hydrology.spcepl_head,1);
     511            }
     512           
     513            // materials
     514            md.materials.rheology_B=DepthAverage(md,md.materials.rheology_B);
     515            md.materials.rheology_n=project2d(md,md.materials.rheology_n,1);
     516           
     517            // damage:
     518            if (md.damage.isdamage)
     519                md.damage.D=DepthAverage(md,md.damage.D);
     520
     521            // special for thermal modeling:
     522            if (!isNaN(md.basalforcings.groundedice_melting_rate))
     523                md.basalforcings.groundedice_melting_rate=project2d(md,md.basalforcings.groundedice_melting_rate,1);
     524
     525            if (!isNaN(md.basalforcings.floatingice_melting_rate))
     526                md.basalforcings.floatingice_melting_rate=project2d(md,md.basalforcings.floatingice_melting_rate,1);
     527
     528            md.basalforcings.geothermalflux=project2d(md,md.basalforcings.geothermalflux,1); // bedrock only gets geothermal flux
     529
     530            // update of connectivity matrix
     531            md.mesh.average_vertex_connectivity=25;
     532
     533            // Collapse the mesh
     534            var nodes2d=md.mesh.numberofvertices2d;
     535            var elements2d=md.mesh.numberofelements2d;
     536
     537            // parameters
     538            md.geometry.surface=project2d(md,md.geometry.surface,1);
     539            md.geometry.thickness=project2d(md,md.geometry.thickness,1);
     540            md.geometry.base=project2d(md,md.geometry.base,1);
     541            if (!isNaN(md.geometry.bed))
     542                md.geometry.bed=project2d(md,md.geometry.bed,1);
     543
     544            if (!isNaN(md.mask.groundedice_levelset))
     545                md.mask.groundedice_levelset=project2d(md,md.mask.groundedice_levelset,1);
     546
     547            if (!isNaN(md.mask.ice_levelset))
     548                md.mask.ice_levelset=project2d(md,md.mask.ice_levelset,1);
     549
     550            // lat long
     551            if (numel(md.mesh.lat) === md.mesh.numberofvertices)
     552                md.mesh.lat=project2d(md,md.mesh.lat,1);
     553            if (numel(md.mesh.long) === md.mesh.numberofvertices)
     554                md.mesh.long=project2d(md,md.mesh.long,1);
     555
     556            // Initialize with the 2d mesh
     557            var mesh = new mesh2d();
     558            mesh.x=md.mesh.x2d;
     559            mesh.y=md.mesh.y2d;
     560            mesh.numberofvertices=md.mesh.numberofvertices2d;
     561            mesh.numberofelements=md.mesh.numberofelements2d;
     562            mesh.elements=md.mesh.elements2d;
     563
     564            if (!isNaN(md.mesh.vertexonboundary))
     565                mesh.vertexonboundary=project2d(md,md.mesh.vertexonboundary,1);
     566            if (!isNaN(md.mesh.elementconnectivity))
     567                mesh.elementconnectivity=project2d(md,md.mesh.elementconnectivity,1);
     568
     569            md.mesh=mesh;
     570            md.mesh.vertexconnectivity=NodeConnectivity(md.mesh.elements,md.mesh.numberofvertices);
     571            md.mesh.elementconnectivity=ElementConnectivity(md.mesh.elements,md.mesh.vertexconnectivity);
     572            md.mesh.segments=contourenvelope(md.mesh);
     573
     574            return md;
     575        }
    386576        //properties
    387577        // {{{
    388578                //Careful here: no other class should be used as default value this is a bug of matlab
  • ../trunk-jpl/jenkins/javascript/karma/lib/bin/contourenvelope.js

     
     1link /home/andy/Programming/Research/trunk-jpl/src/m/parameterization/contourenvelope.js
     2 No newline at end of file
  • ../trunk-jpl/jenkins/javascript/karma/lib/bin/project2d.js

    Property changes on: ../trunk-jpl/jenkins/javascript/karma/lib/bin/contourenvelope.js
    ___________________________________________________________________
    Added: svn:special
       + *
    
     
     1link /home/andy/Programming/Research/trunk-jpl/src/m/extrusion/project2d.js
     2 No newline at end of file
  • ../trunk-jpl/jenkins/javascript/karma/lib/bin/DepthAverage.js

    Property changes on: ../trunk-jpl/jenkins/javascript/karma/lib/bin/project2d.js
    ___________________________________________________________________
    Added: svn:special
       + *
    
     
     1link /home/andy/Programming/Research/trunk-jpl/src/m/extrusion/DepthAverage.js
     2 No newline at end of file
  • ../trunk-jpl/jenkins/javascript/karma/lib/bin/issm-binaries.js

    Property changes on: ../trunk-jpl/jenkins/javascript/karma/lib/bin/DepthAverage.js
    ___________________________________________________________________
    Added: svn:special
       + *
    
     
    1118111181
    1118211182        //Marshall into a binary array (fid) all the fields of model.
    1118311183        var fid = marshall(md);                                          // bin file
    11184        
    1118511184        //deal with toolkits options:
    1118611185        toolkitsstring= md.toolkits.ToolkitsFile(md.miscellaneous.name + '.toolkits'); // toolkits file
    1118711186
  • ../trunk-jpl/jenkins/javascript/karma/scripts/test104.js

     
    66md.extrude(md,3,2.);
    77setflowequation(md,'FS','all');
    88//md.cluster=generic('name',oshostname(),'np',3);
    9 md=solve(md,StressbalanceSolutionEnum());
     9md=solve(md,StressbalanceSolutionEnum(),'checkconsistency','no');
    1010
    1111//Fields and tolerances to track changes
    1212field_names     =['Vx','Vy','Vz','Vel','Pressure'];
  • ../trunk-jpl/jenkins/javascript/karma/karma.conf.js

     
    3939      'lib/bin/damage.js',
    4040      'lib/bin/qmu.js',
    4141      'lib/bin/basalforcings.js',
     42      'lib/bin/DepthAverage.js',
     43      'lib/bin/project2d.js',
    4244      'lib/bin/project3d.js',
    4345      'lib/bin/model.js',
    4446      //'scripts/specs/issm.spec.js'
    45       'scripts/specs/temp.spec.js'
     47      //'scripts/specs/temp.spec.js'
     48      'scripts/test102.js'
    4649      //'scripts/specs/3.spec.js'
    4750    ],
    4851
Note: See TracBrowser for help on using the repository browser.