Changeset 19787


Ignore:
Timestamp:
11/22/15 21:49:27 (9 years ago)
Author:
Eric.Larour
Message:

CHG: implemented ismodelselfconsistent routine and all corresponding checkconsistency
routines in the main model classes. Implemented embryo of i/o routines to start marshalling
model. Implemented issm.js and compilation of main issm module to run ISSM in javascript.

Location:
issm/trunk-jpl
Files:
4 added
26 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/m/array/arrayoperations.js

    r19780 r19787  
    141141        for (i=0;i<array.length;i++)sqrtarray[i]=Math.sqrt(array[i]);
    142142        return sqrtarray;
     143} //}}}
     144function ArrayScale(array,alpha) { //{{{
     145
     146        for (i=0;i<array.length;i++)array[i]=array[i]*alpha;
     147
    143148} //}}}
    144149function ArrayMag(array1,array2) { //{{{
  • issm/trunk-jpl/src/m/classes/autodiff.js

    r19759 r19787  
    3131
    3232        }// }}}
     33                this.checkconsistency = function(md,solution,analyses){ //{{{
     34
     35                        //Early return
     36                        if (!this.isautodiff) return;
     37
     38                        //Driver value:
     39                        checkfield(md,'fieldname','autodiff.driver','values',['fos_forward','fov_forward','fov_forward_all','fos_reverse','fov_reverse','fov_reverse_all']);
     40                       
     41                        //buffer values:
     42                        checkfield(md,'fieldname','autodiff.obufsize','>=',16);
     43                        checkfield(md,'fieldname','autodiff.lbufsize','>=',16);
     44                        checkfield(md,'fieldname','autodiff.cbufsize','>=',16);
     45                        checkfield(md,'fieldname','autodiff.tbufsize','>=',16);
     46                        checkfield(md,'fieldname','autodiff.gcTriggerRatio','>=',0);
     47                        checkfield(md,'fieldname','autodiff.gcTriggerMaxSize','>=',65536);
     48
     49                        //go through our dependents and independents and check consistency:
     50                        for (var i=0;i<this.dependents.length;i++){
     51                                dep=this.dependents[i];
     52                                dep.checkconsistency(md,solution,analyses);
     53                        }
     54                        for (var i=0;i<this.independents.length;i++){
     55                                indep=this.independents[i];
     56                                indep.checkconsistency(md,i,solution,analyses,this.driver);
     57                        }
     58                } // }}}
    3359        //properties
    3460        // {{{
  • issm/trunk-jpl/src/m/classes/balancethickness.js

    r19759 r19787  
    2020
    2121        }// }}}
     22                this.checkconsistency = function(md,solution,analyses){ // {{{
     23                        //Early return
     24                        if (solution!=BalancethicknessSolutionEnum())return;
     25
     26                        checkfield(md,'fieldname','balancethickness.spcthickness');
     27                        checkfield(md,'fieldname','balancethickness.thickening_rate','size',[md.mesh.numberofvertices ,1],'NaN',1);
     28                        checkfield(md,'fieldname','balancethickness.stabilization','size',[1, 1],'values',[0, 1, 2 ,3]);
     29                        //checkfield(md,'fieldname','balancethickness.omega','size',[md.mesh.numberofvertices ,1],'NaN',1,'>=',0);
     30                } //}}}
    2231        //properties
    2332        // {{{
  • issm/trunk-jpl/src/m/classes/calving.js

    r19759 r19787  
    2121
    2222        }// }}}
     23        this.checkconsistency = function(md,solution,analyses) { // {{{
     24                //Early return
     25                if (solution!=TransientSolutionEnum() | md.transient.iscalving==0) return;
     26
     27                checkfield(md,'fieldname','calving.spclevelset','timeseries',1);
     28                checkfield(md,'fieldname','calving.stabilization','values',[0,1,2]);
     29                checkfield(md,'fieldname','calving.calvingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1);
     30                checkfield(md,'fieldname','calving.meltingrate(1:md.mesh.numberofvertices,:)','>=',0,'timeseries',1,'NaN',1);
     31        } //}}}
    2332        //properties
    2433        // {{{
  • issm/trunk-jpl/src/m/classes/clusters/generic.js

    r19753 r19787  
    3636                console.log(sprintf('    shell: %s',this.shell));
    3737        }// }}}
     38                this.checkconsistency = function (md,solution,analyses) { //{{{
     39                        if (cluster.np<1){
     40                                md.checkmessage('number of processors should be at least 1');
     41                        }
     42                        if (isNaN(cluster.np)){
     43                                md.checkmessage('number of processors should not be NaN!');
     44                        }
     45                } //}}}
    3846        //properties
    3947        // {{{
  • issm/trunk-jpl/src/m/classes/flaim.js

    r19759 r19787  
    3737
    3838        }// }}}
     39        this.checkconsistency = function(md,solution,analyses) { // {{{
     40
     41                //Early return
     42                if (solution!=FlaimSolutionEnum()) return;
     43
     44                checkfield(md,'fieldname','flaim.tracks','file',1);
     45                if (isNaN(md.flaim.criterion) | md.flaim.criterion.length==0){
     46                        checkfield(md,'fieldname','flaim.targets','file',1);
     47                }
     48                else{
     49                        checkfield(md,'fieldname','flaim.criterion','numel',[md.mesh.numberofvertices, md.mesh.numberofelements]);
     50                }
     51        } //}}}
    3952        //properties
    4053        // {{{
  • issm/trunk-jpl/src/m/classes/gia.js

    r19759 r19787  
    2020
    2121        }// }}}
     22        this.checkconsistency = function(md,solution,analyses) { // {{{
     23
     24                if(!ArrayAnyEqual(ArrayIsMember(GiaAnalysisEnum(),analyses),1))return;
     25
     26                checkfield(md,'fieldname','gia.mantle_viscosity','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0);
     27                checkfield(md,'fieldname','gia.lithosphere_thickness','NaN',1,'size',[md.mesh.numberofvertices,1],'>',0);
     28                checkfield(md,'fieldname','gia.cross_section_shape','numel',[1],'values',[1,2]);
     29
     30                //be sure that if we are running a masstransport ice flow model coupled with gia, that thickness forcings
     31                //are not provided into the future.
     32                if (solution==TransientSolutionEnum() & md.transient.ismasstransport & md.transient.isgia){
     33                        //figure out if thickness is a transient forcing:
     34                        if (md.geometry.thickness.length == (md.mesh.numberofvertices+1)){
     35                                //recover the furthest time "in time":
     36                                t=md.geometry.thickness[0].length;
     37                                if(md.geometry.thickness[md.geometry.thickness.length-1][t-1]!=md.timestepping.start_time){
     38                                        md.checkmessage('if ismasstransport is on, transient thickness forcing for the gia model should not be provided in the future. Synchronize your start_time to correspond to the most recent transient thickness forcing timestep');
     39                                }
     40                        }
     41                }
     42        } // }}}
    2243        //properties
    2344        // {{{
  • issm/trunk-jpl/src/m/classes/groundingline.js

    r19753 r19787  
    1717
    1818        }// }}}
     19                this.checkconsistency = function(md,solution,analyses) {// {{{
     20
     21                        checkfield(md,'fieldname','groundingline.migration','values',['None', 'AggressiveMigration', 'SoftMigration', 'SubelementMigration', 'SubelementMigration2', 'Contact', 'None', 'GroundingOnly']);
     22
     23                        if (this.migration !='None'){
     24                                if (isNaN(md.geometry.bed)){
     25                                        md.checkmessage('requesting grounding line migration, but bathymetry is absent!');
     26                                }
     27                                for (var i=0;i<md.mesh.numberofvertices;i++){
     28                                        if(md.mask.groundedice_levelset[i]>0){
     29                                                md.checkmessage('base not equal to bed on grounded ice!');
     30                                                break;
     31                                        }
     32                                        if(md.geometry.bed[i] - md.geometry.base[i] > Math.pow(10,-9)){
     33                                                md = checkmessage(md,'bed superior to base on floating ice!');
     34                                                break;
     35                                        }
     36                                }
     37                        }
     38                } // }}}
    1939        //properties
    2040        // {{{
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.js

    r19780 r19787  
    2323                return "hydrologyshreve";
    2424        }// }}}
     25                this.checkconsistency = function(md,solution,analyses) { //{{{
     26
     27                        //Early return
     28                        if(!ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1)) return;
     29
     30                        checkfield(md,'fieldname','hydrology.spcwatercolumn','timeseries',1);
     31                        checkfield(md,'fieldname','hydrology.stabilization','>=',0);
     32
     33                } // }}}
    2534        //properties
    2635        // {{{
  • issm/trunk-jpl/src/m/classes/inversion.js

    r19759 r19787  
    7575
    7676        }// }}}
     77                this.checkconsistency = function(md,solution,analyses) { //{{{
     78
     79                        //Early return
     80                        if (!this.iscontrol) return;
     81
     82                        num_controls=md.inversion.control_parameters.length;
     83                        num_costfunc=md.inversion.control_parameters[0].length;
     84
     85                        checkfield(md,'fieldname','inversion.iscontrol','values',[0, 1]);
     86                        checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 ,1]);
     87                        checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',supportedcontrols());
     88                        checkfield(md,'fieldname','inversion.nsteps','numel',1,'>=',0);
     89                        checkfield(md,'fieldname','inversion.maxiter_per_step','size',[md.inversion.nsteps, 1],'>=',0);
     90                        checkfield(md,'fieldname','inversion.step_threshold','size',[md.inversion.nsteps, 1]);
     91                        checkfield(md,'fieldname','inversion.cost_functions','size',[1, num_costfunc],'values',supportedcostfunctions());
     92                        checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices, num_costfunc],'>=',0);
     93                        checkfield(md,'fieldname','inversion.gradient_scaling','size',[md.inversion.nsteps, num_controls]);
     94                        checkfield(md,'fieldname','inversion.min_parameters','size',[md.mesh.numberofvertices , num_controls]);
     95                        checkfield(md,'fieldname','inversion.max_parameters','size',[md.mesh.numberofvertices ,num_controls]);
     96
     97                        //Only SSA, HO and FS are supported right now
     98                        if (solution==StressbalanceSolutionEnum()){
     99                                if (!(md.flowequation.isSSA | md.flowequation.isHO | md.flowequation.isFS | md.flowequation.isL1L2)){
     100                                        md.checkmessage('inversion can only be performed for SSA, HO or FS ice flow models');
     101                                }
     102                        }
     103
     104                        if (solution==BalancethicknessSolutionEnum()){
     105                                checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices ,1],'NaN',1);
     106                        }
     107                        else if (solution==BalancethicknessSoftSolutionEnum()){
     108                                checkfield(md,'fieldname','inversion.thickness_obs','size',[md.mesh.numberofvertices, 1],'NaN',1);
     109                        }
     110                        else{
     111                                checkfield(md,'fieldname','inversion.vx_obs','size',[md.mesh.numberofvertices ,1],'NaN',1);
     112                                checkfield(md,'fieldname','inversion.vy_obs','size',[md.mesh.numberofvertices ,1],'NaN',1);
     113                        }
     114                } // }}}
    77115        //properties
    78116        // {{{
  • issm/trunk-jpl/src/m/classes/masstransport.js

    r19759 r19787  
    3838
    3939        }// }}}
     40                this.checkconsistency = function (md,solution,analyses){  // {{{
     41
     42                        //Early return
     43                        if(!ArrayAnyEqual(ArrayIsMember(HydrologyShreveAnalysisEnum(),analyses),1) | (solution==TransientSolutionEnum() & md.transient.ismasstransport==0)) return;
     44
     45                        checkfield(md,'fieldname','masstransport.spcthickness','timeseries',1);
     46                        checkfield(md,'fieldname','masstransport.isfreesurface','values',[0 ,1]);
     47                        checkfield(md,'fieldname','masstransport.hydrostatic_adjustment','values',['Absolute', 'Incremental']);
     48                        checkfield(md,'fieldname','masstransport.stabilization','values',[0,1,2,3,4]);
     49                        checkfield(md,'fieldname','masstransport.min_thickness','>',0);
     50                        checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1);
     51
     52                } // }}}
    4053        //properties
    4154        // {{{
  • issm/trunk-jpl/src/m/classes/miscellaneous.js

    r19759 r19787  
    1717
    1818        }// }}}
     19                this.checkconsistency= function(md,solution,analyses) {// {{{
     20
     21                        checkfield(md,'fieldname','miscellaneous.name','empty',1);
     22                }// }}}
    1923        //properties
    2024        // {{{
  • issm/trunk-jpl/src/m/classes/outputdefinition.js

    r19759 r19787  
    1515
    1616        }// }}}
     17                this.checkconsistency = function(md,solution,analyses) { //{{{
     18
     19                        checkfield(md,'fieldname','outputdefinition.definitions','cell',1);
     20
     21                        for (var i=0;i<this.definitions.length;i++){
     22                                this.definitions[i].checkconsistency(md,solution,analyses);
     23                        }
     24
     25                } // }}}
    1726        //properties
    1827        // {{{
  • issm/trunk-jpl/src/m/classes/private.js

    r19759 r19787  
    1616                fielddisplay(this,'solution','type of solution launched');
    1717        }// }}}
     18        this.checkconsistency = function(md,solution,analyses){ // {{{
     19
     20        }// % }}}
    1821        //properties
    1922        // {{{
  • issm/trunk-jpl/src/m/classes/qmu.js

    r19759 r19787  
    9090
    9191        }// }}}
     92                this.checkconsistency = function(md,solution,analyses) { //{{{
     93
     94                        ///Early return
     95                        if (!md.qmu.isdakota) return;
     96                        else md.checkmessage('qmu runs not supported yet!');
     97
     98                } // }}}
    9299        //properties
    93100        // {{{
  • issm/trunk-jpl/src/m/classes/rifts.js

    r19753 r19787  
    1313                fielddisplay(this,'riftproperties','');
    1414        }// }}}
     15                this.checkconsistency = function(md,solution,analyses) { //{{{
     16                        if (isNaN(this.riftstruct) | this.riftstruct.length==0){
     17                                numrifts=0;
     18                        }
     19                        else{
     20                                numrifts=this.riftstruct.length;
     21                        }
     22                        if (numrifts){
     23                                if (!(md.mesh.domaintype() == '2Dhorizontal')){
     24                                        md.checkmessage('models with rifts are only supported in 2d for now!');
     25                                }
     26                                if (!IsArray(this.riftstruct)){
     27                                        md.checkmessage('rifts.riftstruct should be a structure!');
     28                                }
     29                                for(var i=0;i<md.mesh.segmentmarkers.length;i++){
     30                                        if (md.mesh.segmentmarkers[i]>=2){
     31                                                //We have segments with rift markers, but no rift structure!
     32                                                md.checkmessage(['model should be processed for rifts (run meshprocessrifts)!']);
     33                                                break;
     34                                        }
     35                                }
     36                                for (var i=0;i<numrifts;i++){
     37                                        md = checkfield(md,'fieldname',sprintf('rifts.riftstruct[%i].fill',i),'values',[WaterEnum(), AirEnum(), IceEnum(), MelangeEnum()]);
     38                                }
     39                        }
     40                        else{
     41                                if (!isNaN(this.riftstruct)) md.checkmessage('riftstruct should be NaN since numrifts is 0!');
     42                        }
     43                } //}}}
    1544        //properties
    1645        // {{{
  • issm/trunk-jpl/src/m/classes/settings.js

    r19753 r19787  
    3333
    3434        }// }}}
     35                this.checkconsistency = function(md,solution,analyses) { // {{{
     36
     37                        checkfield(md,'fieldname','settings.results_on_nodes','numel',[1],'values',[0, 1]);
     38                        checkfield(md,'fieldname','settings.io_gather','numel',[1],'values',[0, 1]);
     39                        checkfield(md,'fieldname','settings.lowmem','numel',[1],'values',[0, 1]);
     40                        checkfield(md,'fieldname','settings.output_frequency','numel',[1],'>=',1);
     41                        checkfield(md,'fieldname','settings.recording_frequency','numel',[1],'>=',0);
     42                        checkfield(md,'fieldname','settings.waitonlock','numel',[1]);
     43                } // }}}
    3544        //properties
    3645        // {{{
  • issm/trunk-jpl/src/m/classes/steadystate.js

    r19759 r19787  
    2828
    2929        }// }}}
     30        this.checkconsistency = function(md,solution,analyses) {// {{{
     31
     32                //Early return
     33                if (solution!=SteadystateSolutionEnum()) return;
     34
     35                if (md.timestepping.time_step!=0){
     36                        md.checkmessage('for a steadystate computation, timestepping.time_step must be zero.');
     37                }
     38                checkfield(md,'fieldname','steadystate.requested_outputs','stringrow',1);
     39
     40                if (isNaN(md.stressbalance.reltol)){
     41                        md.checkmessage('for a steadystate computation, stressbalance.reltol (relative convergence criterion) must be defined!');
     42                }
     43        } // }}}
    3044        //properties
    3145        // {{{
  • issm/trunk-jpl/src/m/classes/stressbalance.js

    r19759 r19787  
    7373
    7474        }// }}}
     75                this.checkconsistency = function(md,solution,analyses) { //{{{
     76
     77                        //Early return
     78                        if(ArrayAnyEqual(ArrayIsMember(StressbalanceAnalysisEnum(),analyses),0))return;
     79
     80                        checkfield(md,'fieldname','stressbalance.spcvx','timeseries',1);
     81                        checkfield(md,'fieldname','stressbalance.spcvy','timeseries',1);
     82                        checkfield(md,'fieldname','stressbalance.spcvz','timeseries',1);
     83                        checkfield(md,'fieldname','stressbalance.restol','size',[1, 1],'>',0,'NaN',1);
     84                        checkfield(md,'fieldname','stressbalance.reltol','size',[1, 1]);
     85                        checkfield(md,'fieldname','stressbalance.abstol','size',[1, 1]);
     86                        checkfield(md,'fieldname','stressbalance.isnewton','numel',[1],'values',[0, 1, 2]);
     87                        checkfield(md,'fieldname','stressbalance.FSreconditioning','size',[1, 1],'NaN',1);
     88                        checkfield(md,'fieldname','stressbalance.viscosity_overshoot','size',[1, 1],'NaN',1);
     89                        checkfield(md,'fieldname','stressbalance.maxiter','size',[1, 1],'>=',1);
     90                        checkfield(md,'fieldname','stressbalance.referential','size',[md.mesh.numberofvertices, 6]);
     91                        checkfield(md,'fieldname','stressbalance.loadingforce','size',[md.mesh.numberofvertices, 3]);
     92                        checkfield(md,'fieldname','stressbalance.requested_outputs','stringrow',1);
     93
     94                        //singular solution
     95                        if(!ArrayAnyNaN(md.stressbalance.spcvx) | !ArrayAnyNaN(md.stressbalance.spcvy) |  !ArrayAnyAboveStrict(md.mask.groundedice_levelset,0)){
     96                                md = checkmessage(md,'model is not well posed (singular). You need at least one node with fixed velocity!');
     97                                console.log(sprintf('\n !!! Warning: no spc applied, model might not be well posed if no basal friction is applied, check for solution crash\n'));
     98                        }
     99                        //CHECK THAT EACH LINES CONTAINS ONLY NAN VALUES OR NO NAN VALUES
     100                        for(var i=0;i<md.stressbalance.referential.length;i++){
     101                                var sum=0;
     102                                for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
     103                                if (sum!=0 & sum!=6){
     104                                        md = checkmessage(md,'Each line of stressbalance.referential should contain either only NaN values or no NaN values');
     105                                        break;
     106                                }
     107                        }
     108                        //CHECK THAT THE TWO VECTORS PROVIDED ARE ORTHOGONAL
     109                        for(var i=0;i<md.stressbalance.referential.length;i++){
     110                                var sum=0;
     111                                for(j=0;j<md.stressbalance.referential[0].length;j++)sum+=md.stressbalance.referential[i][j];
     112                                if(sum==0){
     113                                        var dot=0;
     114                                        for(j=0;j<3;j++)dot+=md.stressbalance.referential[i][j]*md.stressbalance.referential[i][j+3];
     115                                        dot=Math.abs(dot);
     116                                        if(dot>Math.pow(10,-18)){
     117                                                md.checkmessage('Vectors in stressbalance.referential (columns 1 to 3 and 4 to 6) must be orthogonal');
     118                                                break;
     119                                        }
     120                                }
     121                        }
     122                        //CHECK THAT NO rotation specified for FS Grounded ice at base
     123                        if (md.mesh.domaintype() == '3D' & md.flowequation.isFS){
     124                                for(var i=0;i<md.mask.groundedice_levelset.length;i++){
     125                                        if(md.mask.groundedice_levelset[i]>0 & md.mesh.vertexonbase[i]){
     126                                                if(!ArrayIsNan(md.stressbalance.referential[i])){
     127                                                        md.checkmessage('no referential should be specified for basal vertices of grounded ice');
     128                                                        break;
     129                                                }
     130                                        }
     131                                }
     132                                checkfield(md,'fieldname','stressbalance.FSreconditioning','>',0);
     133                        }
     134                } // }}}
    75135        //properties
    76136        // {{{
  • issm/trunk-jpl/src/m/classes/thermal.js

    r19759 r19787  
    4949
    5050        }// }}}
     51        this.checkconsistency = function(md,solution,analyses){ // {{{
     52
     53                //Early return
     54                if(!ArrayAnyEqual(ArrayIsMember(ThermalAnalysisEnum(),analyses),1) & !ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1)  | (solution == TransientSolutionEnum() & md.transient.isthermal==0)) return;
     55
     56                checkfield(md,'fieldname','thermal.stabilization','numel',[1],'values',[0 ,1, 2]);
     57                checkfield(md,'fieldname','thermal.spctemperature','timeseries',1);
     58                if(ArrayAnyEqual(ArrayIsMember(EnthalpyAnalysisEnum(),analyses),1) & md.thermal.isenthalpy & md.mesh.dimension() == 3){
     59                       
     60                        for(var i=0;i<md.mesh.numberofvertices;i++){
     61                                for(var j=0;j<md.thermal.spctemperature[0].length;j++){
     62                                        if (!isNaN(md.thermal.spctemperature[i][j])){
     63                                                var rep=md.geometry.surface[i]-md.mesh.z[i];
     64                                                if (md.thermal.spctemperature[i][j] <= md.materials.melting-md.materials.beta*md.materials.rho_ice*md.constants.g*rep+Math.pow(10,-5)){
     65
     66                                                        md.checkmessage('spctemperature should be less or equal than the adjusted melting point');
     67                                                        break;
     68                                                }
     69                                        }
     70                                }
     71                        }
     72                        checkfield(md,'fieldname','thermal.isenthalpy','numel',[1],'values',[0, 1]);
     73                        checkfield(md,'fieldname','thermal.isdynamicbasalspc','numel', [1],'values',[0, 1]);
     74                        if(md.thermal.isenthalpy){
     75                                if (isNan(md.stressbalance.reltol)){
     76                                        md.checkmessage('for a steadystate computation, thermal.reltol (relative convergence criterion) must be defined!');
     77                                }
     78                        }
     79                        checkfield(md,'fieldname','thermal.reltol','>',0.,'message','reltol must be larger than zero');
     80                }
     81                checkfield(md,'fieldname','thermal.requested_outputs','stringrow',1);
     82        } // }}}
    5183        //properties
    5284        // {{{
  • issm/trunk-jpl/src/m/classes/toolkits.js

    r19753 r19787  
    3030                }
    3131        }// }}}
    32         this.disp= function(){// {{{
     32        this.disp = function(){// {{{
    3333                console.log(sprintf('List of toolkits options per analysis:\n'));
    3434                for(var prop in this){
     
    3838                }
    3939        }// }}}
     40        this.checkconsistency = function (md,solution,analyses) { // {{{
     41                for(var prop in this){
     42                        if(typeof this[prop] == 'object'){
     43                                if (this[prop] == ''){
     44                                        md.checkmessage(sprintf("md.toolkits.%s is empty",prop));
     45                                }
     46                        }
     47                }
     48        } // }}}
    4049        //properties
    4150        // {{{
  • issm/trunk-jpl/src/m/classes/transient.js

    r19759 r19787  
    4242
    4343        }// }}}
     44                this.checkconsistency = function(md,solution,analyses) { // {{{
     45
     46                        //Early return
     47                        if (solution!=TransientSolutionEnum()) return;
     48
     49                        checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0 ,1]);
     50                        checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0 ,1]);
     51                        checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0 ,1]);
     52                        checkfield(md,'fieldname','transient.isthermal','numel',[1],'values',[0 ,1]);
     53                        checkfield(md,'fieldname','transient.isgroundingline','numel',[1],'values',[0, 1]);
     54                        checkfield(md,'fieldname','transient.isgia','numel',[1],'values',[0, 1]);
     55                        checkfield(md,'fieldname','transient.isdamageevolution','numel',[1],'values',[0, 1]);
     56                        checkfield(md,'fieldname','transient.islevelset','numel',[1],'values',[0, 1]);
     57                        checkfield(md,'fieldname','transient.iscalving','numel',[1],'values',[0, 1]);
     58                        checkfield(md,'fieldname','transient.ishydrology','numel',[1],'values',[0 ,1]);
     59                        checkfield(md,'fieldname','transient.requested_outputs','stringrow',1);
     60                } // }}}
    4461        //properties
    4562        // {{{
  • issm/trunk-jpl/src/m/classes/verbose.js

    r19753 r19787  
    4040                //ENDDISP
    4141        }// }}}
     42                this.checkconsistency = function(md,solution,analyses){ // {{{
     43
     44                } // }}}
    4245        //properties
    4346        // {{{
  • issm/trunk-jpl/src/m/consistency/ismodelselfconsistent.js

    r19780 r19787  
    2424                        continue;
    2525                }
    26                 console.log(field);
    2726
    2827                //Check consistency of the class
  • issm/trunk-jpl/src/wrappers/javascript/Makefile.am

    r19768 r19787  
    8383                                         ../IssmConfig/IssmConfig.cpp\
    8484                                         ../EnumToString/EnumToString.cpp\
    85                                          ../StringToEnum/StringToEnum.cpp
     85                                         ../StringToEnum/StringToEnum.cpp\
     86                                         ../../c/main/issm.cpp
    8687
    87 IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_ --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule','_ElementConnectivityModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_EnumToStringModule','_StringToEnumModule']"  -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1
     88IssmModule_CXXFLAGS= -fPIC -D_DO_NOT_LOAD_GLOBALS_ --memory-init-file 0 $(AM_CXXFLAGS) $(CXXFLAGS) $(CXXOPTFLAGS) $(COPTFLAGS) -s EXPORTED_FUNCTIONS="['_TriMeshModule','_NodeConnectivityModule','_ElementConnectivityModule','_InterpFromMeshToMesh2dModule','_IssmConfigModule','_EnumToStringModule','_StringToEnumModule','_main']"  -s DISABLE_EXCEPTION_CATCHING=0 -s ALLOW_MEMORY_GROWTH=1
    8889IssmModule_LDADD = ${deps} $(TRIANGLELIB)
    8990#}}}
  • issm/trunk-jpl/test/NightlyRun/test101.html

    r19786 r19787  
    6969<script type="text/javascript" src="../../src/m/enum/EnumDefinitions.js"></script>
    7070<script type="text/javascript" src="../../src/m/solvers/issmgslsolver.js"></script>
     71<script type="text/javascript" src="../../src/m/io/fileptr.js"></script>
    7172<script type="text/javascript" src="../../src/m/solve/solve.js"></script>
     73<script type="text/javascript" src="../../src/m/solve/marshall.js"></script>
     74<script type="text/javascript" src="../../src/m/solve/WriteData.js"></script>
    7275<script type="text/javascript" src="../../src/wrappers/TriMesh/TriMesh.js"></script>
    7376<script type="text/javascript" src="../../src/wrappers/EnumToString/EnumToString.js"></script>
     
    7881<script type="text/javascript" src="../../src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.js"></script>
    7982<script type="text/javascript" src="../../build-js/src/wrappers/javascript/IssmModule.js"></script>
     83<script type="text/javascript" src="../../src/c/main/issm.js"></script>
    8084<script type="text/javascript" src="../../externalpackages/javascript/src/sprintf.js"></script>
    8185<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
     
    9195        setmask(md,'all','');
    9296        parameterize(md);
    93        
    94         //setflowequation(md,'SSA','all');
    95         //md=solve(md,StressbalanceSolutionEnum());
     97        setflowequation(md,'SSA','all');
     98        md=solve(md,StressbalanceSolutionEnum());
    9699
    97         plotmodel(md,'data',md.initialization.vel,'colorbar','on', 'data',md.initialization.vx,
    98         'data',md.initialization.temperature, 'data',md.basalforcings.floatingice_melting_rate,'data','mesh');
     100        /*plotmodel(md,'data',md.initialization.vel,'colorbar','on','data',md.initialization.vx,
     101          'data',md.initialization.temperature, 'data',md.basalforcings.floatingice_melting_rate,'data','mesh');
     102        //var output=issm([5,1,1]);*/
    99103
    100104
Note: See TracChangeset for help on using the changeset viewer.