Changeset 18593


Ignore:
Timestamp:
10/08/14 09:26:16 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added SmoothAnalysis, which replaces SmoothedSurfaceXAnalysis and can be applied to any field

Location:
issm/trunk-jpl
Files:
6 added
4 deleted
16 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r18529 r18593  
    657657issm_sources += ./analyses/ThermalAnalysis.cpp
    658658endif
    659 if SMOOTHEDSURFACESLOPEX
    660 issm_sources += ./analyses/SmoothedSurfaceSlopeXAnalysis.cpp
    661 endif
    662 if SMOOTHEDSURFACESLOPEY
    663 issm_sources += ./analyses/SmoothedSurfaceSlopeYAnalysis.cpp
     659if SMOOTH
     660issm_sources += ./analyses/SmoothAnalysis.cpp
    664661endif
    665662if MESHDEFORMATION
  • issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp

    r18068 r18593  
    9595
    9696        /*Get vector N for all nodes and build HNx and HNy*/
    97         element->GetInputListOnNodes(Nx,SurfaceSlopeXEnum);
    98         element->GetInputListOnNodes(Ny,SurfaceSlopeYEnum);
     97        element->GetInputListOnNodes(Nx,DrivingStressXEnum);
     98        element->GetInputListOnNodes(Ny,DrivingStressYEnum);
    9999        element->GetInputListOnNodes(H,ThicknessEnum);
    100100        for(int i=0;i<numnodes;i++){
     
    190190
    191191        /*Get vector N for all nodes*/
    192         basalelement->GetInputListOnNodes(Nx,SurfaceSlopeXEnum);
    193         basalelement->GetInputListOnNodes(Ny,SurfaceSlopeYEnum);
     192        basalelement->GetInputListOnNodes(Nx,DrivingStressXEnum);
     193        basalelement->GetInputListOnNodes(Ny,DrivingStressYEnum);
    194194        basalelement->GetInputListOnNodes(H,ThicknessEnum);
    195195        for(int i=0;i<numnodes;i++){
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp

    r18492 r18593  
    8686                case DepthAverageAnalysisEnum : return new DepthAverageAnalysis();
    8787                #endif
    88                 #ifdef _HAVE_SMOOTHEDSURFACESLOPEX_
    89                 case SmoothedSurfaceSlopeXAnalysisEnum : return new SmoothedSurfaceSlopeXAnalysis();
    90                 #endif
    91                 #ifdef _HAVE_SMOOTHEDSURFACESLOPEY_
    92                 case SmoothedSurfaceSlopeYAnalysisEnum : return new SmoothedSurfaceSlopeYAnalysis();
     88                #ifdef _HAVE_SMOOTH_
     89                case SmoothAnalysisEnum : return new SmoothAnalysis();
    9390                #endif
    9491                #ifdef _HAVE_THERMAL_
  • issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp

    r18057 r18593  
    9393
    9494        /*Initialize Element vector*/
    95         ElementMatrix* Ke    = basalelement->NewElementMatrix(NoneApproximationEnum);
     95        ElementMatrix* Ke    = basalelement->NewElementMatrix();
    9696        IssmDouble*    basis = xNew<IssmDouble>(numnodes);
    9797
  • issm/trunk-jpl/src/c/analyses/analyses.h

    r18492 r18593  
    3232#include "./MeltingAnalysis.h"
    3333#include "./MeshdeformationAnalysis.h"
    34 #include "./SmoothedSurfaceSlopeXAnalysis.h"
    35 #include "./SmoothedSurfaceSlopeYAnalysis.h"
     34#include "./SmoothAnalysis.h"
    3635#include "./SeaiceAnalysis.h"
    3736#include "./StressbalanceAnalysis.h"
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r18573 r18593  
    475475                case BalancevelocitySolutionEnum:
    476476                        analyses_temp[numanalyses++]=BalancevelocityAnalysisEnum;
    477                         analyses_temp[numanalyses++]=SmoothedSurfaceSlopeXAnalysisEnum;
    478                         analyses_temp[numanalyses++]=SmoothedSurfaceSlopeYAnalysisEnum;
     477                        analyses_temp[numanalyses++]=SmoothAnalysisEnum;
    479478                        break;
    480479
  • issm/trunk-jpl/src/c/cores/balancevelocity_core.cpp

    r16529 r18593  
    1919
    2020        if(VerboseSolution()) _printf0_("computing smoothed slopes:\n");
    21         femmodel->SetCurrentConfiguration(SmoothedSurfaceSlopeXAnalysisEnum);
     21        femmodel->SetCurrentConfiguration(SmoothAnalysisEnum);
     22        femmodel->parameters->SetParam(DrivingStressXEnum,InputToSmoothEnum);
    2223        solutionsequence_linear(femmodel);
    23         femmodel->SetCurrentConfiguration(SmoothedSurfaceSlopeYAnalysisEnum);
     24        femmodel->parameters->SetParam(DrivingStressYEnum,InputToSmoothEnum);
    2425        solutionsequence_linear(femmodel);
    25         //surfaceslope_core(femmodel);
    2626
    2727        if(VerboseSolution()) _printf0_("call computational core:\n");
     
    3131        if(save_results){
    3232                if(VerboseSolution()) _printf0_("   saving results\n");
    33                 int outputs[3] = {SurfaceSlopeXEnum,SurfaceSlopeYEnum,VelEnum};
     33                int outputs[3] = {DrivingStressXEnum,DrivingStressYEnum,VelEnum};
    3434                femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3);
    3535        }
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r18581 r18593  
    388388        SteadystateSolutionEnum,
    389389        SurfaceSlopeSolutionEnum,
    390         SmoothedSurfaceSlopeXAnalysisEnum,
    391         SmoothedSurfaceSlopeYAnalysisEnum,
     390        SmoothAnalysisEnum,
    392391        ThermalAnalysisEnum,
    393392        ThermalSolutionEnum,
     
    450449        InputToL2ProjectEnum,
    451450        InputToDepthaverageEnum,
     451        InputToSmoothEnum,
    452452        IntParamEnum,
    453453        IntVecParamEnum,
     
    563563        HydrologyWaterVxEnum,
    564564        HydrologyWaterVyEnum,
     565        DrivingStressXEnum,
     566        DrivingStressYEnum,
    565567        SigmaNNEnum,
    566568        StressTensorEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r18581 r18593  
    391391                case SteadystateSolutionEnum : return "SteadystateSolution";
    392392                case SurfaceSlopeSolutionEnum : return "SurfaceSlopeSolution";
    393                 case SmoothedSurfaceSlopeXAnalysisEnum : return "SmoothedSurfaceSlopeXAnalysis";
    394                 case SmoothedSurfaceSlopeYAnalysisEnum : return "SmoothedSurfaceSlopeYAnalysis";
     393                case SmoothAnalysisEnum : return "SmoothAnalysis";
    395394                case ThermalAnalysisEnum : return "ThermalAnalysis";
    396395                case ThermalSolutionEnum : return "ThermalSolution";
     
    447446                case InputToL2ProjectEnum : return "InputToL2Project";
    448447                case InputToDepthaverageEnum : return "InputToDepthaverage";
     448                case InputToSmoothEnum : return "InputToSmooth";
    449449                case IntParamEnum : return "IntParam";
    450450                case IntVecParamEnum : return "IntVecParam";
     
    554554                case HydrologyWaterVxEnum : return "HydrologyWaterVx";
    555555                case HydrologyWaterVyEnum : return "HydrologyWaterVy";
     556                case DrivingStressXEnum : return "DrivingStressX";
     557                case DrivingStressYEnum : return "DrivingStressY";
    556558                case SigmaNNEnum : return "SigmaNN";
    557559                case StressTensorEnum : return "StressTensor";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r18581 r18593  
    400400              else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
    401401              else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
    402               else if (strcmp(name,"SmoothedSurfaceSlopeXAnalysis")==0) return SmoothedSurfaceSlopeXAnalysisEnum;
    403               else if (strcmp(name,"SmoothedSurfaceSlopeYAnalysis")==0) return SmoothedSurfaceSlopeYAnalysisEnum;
     402              else if (strcmp(name,"SmoothAnalysis")==0) return SmoothAnalysisEnum;
    404403              else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
    405404              else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
     
    456455              else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
    457456              else if (strcmp(name,"InputToDepthaverage")==0) return InputToDepthaverageEnum;
     457              else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
    458458              else if (strcmp(name,"IntParam")==0) return IntParamEnum;
    459459              else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
     
    566566              else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
    567567              else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
     568              else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
     569              else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
    568570              else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
    569571              else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
     
    627629              else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;
    628630              else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum;
    629               else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
    630               else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum;
     634              if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum;
     635              else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum;
     636              else if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum;
    635637              else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum;
    636638              else if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
     
    750752              else if (strcmp(name,"SurfaceforcingsRhoAir")==0) return SurfaceforcingsRhoAirEnum;
    751753              else if (strcmp(name,"SurfaceforcingsAirCoef")==0) return SurfaceforcingsAirCoefEnum;
    752               else if (strcmp(name,"SurfaceforcingsAirLinDragCoef")==0) return SurfaceforcingsAirLinDragCoefEnum;
    753               else if (strcmp(name,"SurfaceforcingsAirQuadDragCoef")==0) return SurfaceforcingsAirQuadDragCoefEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SurfaceforcingsWindVx")==0) return SurfaceforcingsWindVxEnum;
     757              if (strcmp(name,"SurfaceforcingsAirLinDragCoef")==0) return SurfaceforcingsAirLinDragCoefEnum;
     758              else if (strcmp(name,"SurfaceforcingsAirQuadDragCoef")==0) return SurfaceforcingsAirQuadDragCoefEnum;
     759              else if (strcmp(name,"SurfaceforcingsWindVx")==0) return SurfaceforcingsWindVxEnum;
    758760              else if (strcmp(name,"SurfaceforcingsWindVy")==0) return SurfaceforcingsWindVyEnum;
    759761              else if (strcmp(name,"Matseaice")==0) return MatseaiceEnum;
  • issm/trunk-jpl/src/m/classes/inversionvalidation.m

    r18476 r18593  
    1818                vel_obs                     = NaN
    1919                thickness_obs               = NaN
     20                surface_obs               = NaN
    2021        end
    2122        methods
     
    5455                        md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',...
    5556                                {'BalancethicknessThickeningRate' 'FrictionCoefficient' 'MaterialsRheologyBbar' 'DamageDbar' 'Vx' 'Vy' 'Thickness',...
    56                                 'BalancethicknessNu' 'BalancethicknessApparentMassbalance'});
     57                                'BalancethicknessOmega' 'BalancethicknessApparentMassbalance'});
    5758                        md = checkfield(md,'fieldname','inversion.cost_functions','size',[1 num_costfunc],'values',[101:105 201 501:506 601:604]);
    5859                        md = checkfield(md,'fieldname','inversion.cost_functions_coefficients','size',[md.mesh.numberofvertices num_costfunc],'>=',0);
     
    8485                        fielddisplay(obj,'vel_obs','observed velocity magnitude [m/yr]');
    8586                        fielddisplay(obj,'thickness_obs','observed thickness [m]');
     87                        fielddisplay(obj,'surface_obs','observed surface elevation [m]');
    8688                        disp('Available cost functions:');
    8789                        disp('   101: SurfaceAbsVelMisfit');
     
    115117                        end
    116118                        WriteData(fid,'object',obj,'class','inversion','fieldname','thickness_obs','format','DoubleMat','mattype',mattype);
     119                        WriteData(fid,'object',obj,'class','inversion','fieldname','surface_obs','format','DoubleMat','mattype',mattype);
    117120
    118121                        %process control parameters
     
    140143                        pos=find(obj.cost_functions==505); data(pos)=ThicknessAcrossGradientEnum();
    141144                        pos=find(obj.cost_functions==506); data(pos)=BalancethicknessMisfitEnum();
     145                        pos=find(obj.cost_functions==601); data(pos)=SurfaceAbsMisfitEnum();
    142146                        WriteData(fid,'data',data,'enum',InversionCostFunctionsEnum(),'format','DoubleMat','mattype',3);
    143147                        WriteData(fid,'data',num_cost_functions,'enum',InversionNumCostFunctionsEnum(),'format','Integer');
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r18580 r18593  
    383383def SteadystateSolutionEnum(): return StringToEnum("SteadystateSolution")[0]
    384384def SurfaceSlopeSolutionEnum(): return StringToEnum("SurfaceSlopeSolution")[0]
    385 def SmoothedSurfaceSlopeXAnalysisEnum(): return StringToEnum("SmoothedSurfaceSlopeXAnalysis")[0]
    386 def SmoothedSurfaceSlopeYAnalysisEnum(): return StringToEnum("SmoothedSurfaceSlopeYAnalysis")[0]
     385def SmoothAnalysisEnum(): return StringToEnum("SmoothAnalysis")[0]
    387386def ThermalAnalysisEnum(): return StringToEnum("ThermalAnalysis")[0]
    388387def ThermalSolutionEnum(): return StringToEnum("ThermalSolution")[0]
     
    439438def InputToL2ProjectEnum(): return StringToEnum("InputToL2Project")[0]
    440439def InputToDepthaverageEnum(): return StringToEnum("InputToDepthaverage")[0]
     440def InputToSmoothEnum(): return StringToEnum("InputToSmooth")[0]
    441441def IntParamEnum(): return StringToEnum("IntParam")[0]
    442442def IntVecParamEnum(): return StringToEnum("IntVecParam")[0]
     
    546546def HydrologyWaterVxEnum(): return StringToEnum("HydrologyWaterVx")[0]
    547547def HydrologyWaterVyEnum(): return StringToEnum("HydrologyWaterVy")[0]
     548def DrivingStressXEnum(): return StringToEnum("DrivingStressX")[0]
     549def DrivingStressYEnum(): return StringToEnum("DrivingStressY")[0]
    548550def SigmaNNEnum(): return StringToEnum("SigmaNN")[0]
    549551def StressTensorEnum(): return StringToEnum("StressTensor")[0]
  • issm/trunk-jpl/test/NightlyRun/test530.m

    r16044 r18593  
    77
    88%Fields and tolerances to track changes
    9 field_names     ={'SurfaceSlopeX','SurfaceSlopeX','Vel'};
     9field_names     ={'DrivingStressX','DrivingStressX','Vel'};
    1010field_tolerances={1e-13,1e-13,1e-13};
    1111field_values={...
    12         (md.results.BalancevelocitySolution.SurfaceSlopeX),...
    13         (md.results.BalancevelocitySolution.SurfaceSlopeY),...
     12        (md.results.BalancevelocitySolution.DrivingStressX),...
     13        (md.results.BalancevelocitySolution.DrivingStressY),...
    1414        (md.results.BalancevelocitySolution.Vel),...
    1515        };
  • issm/trunk-jpl/test/NightlyRun/test530.py

    r16044 r18593  
    1616
    1717# Fields and tolerances to track changes
    18 field_names     =['SurfaceSlopeX','SurfaceSlopeY','Vel']
     18field_names     =['DrivingStressX','DrivingStressY','Vel']
    1919field_tolerances=[1e-13,1e-13,1e-13]
    2020field_values=[\
    21                 md.results.BalancevelocitySolution.SurfaceSlopeX,\
    22                 md.results.BalancevelocitySolution.SurfaceSlopeY,\
     21                md.results.BalancevelocitySolution.DrivingStressX,\
     22                md.results.BalancevelocitySolution.DrivingStressY,\
    2323                md.results.BalancevelocitySolution.Vel,\
    2424                ]
  • issm/trunk-jpl/test/NightlyRun/test531.m

    r16044 r18593  
    99
    1010%Fields and tolerances to track changes
    11 field_names     ={'SurfaceSlopeX','SurfaceSlopeX','Vel'};
     11field_names     ={'DrivingStressX','DrivingStressX','Vel'};
    1212field_tolerances={1e-13,1e-13,1e-13};
    1313field_values={...
    14         (md.results.BalancevelocitySolution.SurfaceSlopeX),...
    15         (md.results.BalancevelocitySolution.SurfaceSlopeY),...
     14        (md.results.BalancevelocitySolution.DrivingStressX),...
     15        (md.results.BalancevelocitySolution.DrivingStressY),...
    1616        (md.results.BalancevelocitySolution.Vel),...
    1717        };
  • issm/trunk-jpl/test/NightlyRun/test531.py

    r16044 r18593  
    1818
    1919# Fields and tolerances to track changes
    20 field_names     =['SurfaceSlopeX','SurfaceSlopeY','Vel']
     20field_names     =['DrivingStressX','DrivingStressY','Vel']
    2121field_tolerances=[1e-13,1e-13,1e-13]
    2222field_values=[\
    23                 md.results.BalancevelocitySolution.SurfaceSlopeX,\
    24                 md.results.BalancevelocitySolution.SurfaceSlopeY,\
     23                md.results.BalancevelocitySolution.DrivingStressX,\
     24                md.results.BalancevelocitySolution.DrivingStressY,\
    2525                md.results.BalancevelocitySolution.Vel,\
    2626                ]
Note: See TracChangeset for help on using the changeset viewer.