Changeset 17895


Ignore:
Timestamp:
04/30/14 14:18:08 (11 years ago)
Author:
Mathieu Morlighem
Message:

NEW: preparing m1qn3 inversion

Location:
issm/trunk-jpl
Files:
3 added
1 deleted
14 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/m4/issm_options.m4

    r17775 r17895  
    940940        fi
    941941        dnl }}}
     942        dnl m1qn3{{{
     943        AC_ARG_WITH([m1qn3-dir],
     944                AS_HELP_STRING([--with-m1qn3-dir=DIR], [m1qn3 root directory.]),
     945                [M1QN3_ROOT=$withval],[M1QN3_ROOT="no"])
     946
     947        dnl Check whether m1qn3 is enabled
     948        AC_MSG_CHECKING([for m1qn3])
     949        if test "x$M1QN3_ROOT" = "xno" ; then
     950                HAVE_M1QN3=no
     951        else
     952                HAVE_M1QN3=yes
     953                if ! test -d "$M1QN3_ROOT"; then
     954                        AC_MSG_ERROR([m1qn3 directory provided ($M1QN3_ROOT) does not exist]);
     955                fi
     956        fi
     957        AC_MSG_RESULT($HAVE_M1QN3)
     958       
     959        dnl m1qn3 headers and libraries
     960        if test "x$HAVE_M1QN3" == "xyes"; then
     961          M1QN3LIB="$M1QN3_ROOT/libm1qn3.a $M1QN3_ROOT//libddot.a"
     962          AC_DEFINE([_HAVE_M1QN3_],[1],[with M1QN3I in ISSM src])
     963          AC_SUBST([M1QN3LIB])
     964        fi
     965        dnl }}}
    942966        dnl slepc{{{
    943967        AC_ARG_WITH([slepc-dir],
  • issm/trunk-jpl/src/c/Makefile.am

    r17862 r17895  
    423423                                        ./cores/control_core.cpp\
    424424                                        ./cores/controltao_core.cpp\
     425                                        ./cores/controlm1qn3_core.cpp\
    425426                                        ./cores/objectivefunction.cpp\
    426427                                        ./cores/gradient_core.cpp\
     
    874875
    875876libISSMCore_la_SOURCES  = $(issm_sources)
    876 libISSMCore_la_LIBADD = $(PETSCLIB) $(TAOLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
     877libISSMCore_la_LIBADD = $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB) $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB)   $(ADOLCLIB) $(AMPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
    877878libISSMCore_la_FFLAGS = $(AM_FFLAGS)
    878879endif
     
    921922
    922923#External packages
    923 LDADD += $(PETSCLIB) $(TAOLIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB)  $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(AMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
     924LDADD += $(PETSCLIB) $(TAOLIB) $(M1QN3LIB) $(PLAPACKLIB) $(MUMPSLIB) $(SUPERLULIB) $(SPOOLESLIB) $(SCALAPACKLIB) $(BLACSLIB) $(HYPRELIB) $(SPAILIB) $(PROMETHEUSLIB) $(PASTIXLIB) $(MLLIB) $(DAKOTALIB) $(METISLIB) $(CHACOLIB) $(SCOTCHLIB) $(BLASLAPACKLIB) $(MKLLIB) $(MPILIB)  $(MATHLIB) $(GRAPHICSLIB) $(MULTITHREADINGLIB) $(OSLIBS) $(GSLLIB) $(AMPILIB) $(ADOLCLIB) $(MPILIB) $(METEOIOLIB) $(SNOWPACKLIB)
    924925
    925926if FORTRAN
  • issm/trunk-jpl/src/c/cores/WrapperCorePointerFromSolutionEnum.cpp

    r17236 r17895  
    2121
    2222        /*parameters: */
    23         bool control_analysis=false;
    24         bool tao_analysis=false;
    25         bool dakota_analysis=false;
     23        bool control_analysis;
     24        bool dakota_analysis;
     25        int  inversiontype;
    2626
    2727        /* retrieve some parameters that tell us whether wrappers are allowed, or whether we return
     
    3030        parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum);
    3131        parameters->FindParam(&control_analysis,InversionIscontrolEnum);
    32         parameters->FindParam(&tao_analysis,InversionTaoEnum);
     32        parameters->FindParam(&inversiontype,InversionTypeEnum);
    3333
    3434        if(nodakotacore)dakota_analysis=false;
     
    4242        }
    4343        else if(control_analysis){
    44                 if(tao_analysis) solutioncore=controltao_core;
    45                 else solutioncore=control_core;
     44                switch(inversiontype){
     45                        case 0: solutioncore=control_core; break;
     46                        case 1: solutioncore=controltao_core; break;
     47                        case 2: solutioncore=controlm1qn3_core; break;
     48                        default: _error_("control type not supported");
     49                }
    4650        }
    4751        else CorePointerFromSolutionEnum(&solutioncore,parameters,solutiontype);  /*This means we retrieve a core solution that is not a wrapper*/
  • issm/trunk-jpl/src/c/cores/cores.h

    r17831 r17895  
    2929void control_core(FemModel* femmodel);
    3030void controltao_core(FemModel* femmodel);
     31void controlm1qn3_core(FemModel* femmodel);
    3132void masstransport_core(FemModel* femmodel);
    3233void depthaverage_core(FemModel* femmodel);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Control/CreateParametersControl.cpp

    r16542 r17895  
    1010void CreateParametersControl(Parameters* parameters,IoModel* iomodel,int solution_type){
    1111
    12         bool        control_analysis,tao_analysis;
     12        bool        control_analysis;
     13        int         inversiontype;
    1314        int         nsteps;
    1415        int         num_control_type;
     
    2223        /*retrieve some parameters: */
    2324        iomodel->Constant(&control_analysis,InversionIscontrolEnum);
    24         iomodel->Constant(&tao_analysis,InversionTaoEnum);
     25        iomodel->Constant(&inversiontype,InversionTypeEnum);
    2526
    2627        if(control_analysis){
     
    3132                parameters->AddObject(iomodel->CopyConstantObject(InversionNstepsEnum));
    3233                parameters->AddObject(iomodel->CopyConstantObject(InversionIncompleteAdjointEnum));
    33                 if(!tao_analysis){
     34                if(inversiontype==0){
    3435                        parameters->AddObject(iomodel->CopyConstantObject(InversionCostFunctionThresholdEnum));
    3536                }
     
    4647                iomodel->FetchData(&control_type,NULL,&num_control_type,InversionControlParametersEnum);
    4748                iomodel->FetchData(&cm_responses,NULL,&num_cm_responses,InversionCostFunctionsEnum);
    48                 if(!tao_analysis){
     49                if(inversiontype==0){
    4950                        iomodel->FetchData(&cm_jump,&nsteps,NULL,InversionStepThresholdEnum);
    5051                        iomodel->FetchData(&optscal,NULL,NULL,InversionGradientScalingEnum);
     
    5253                }
    5354
    54                 if(tao_analysis){
     55                if(inversiontype!=0){
    5556                        parameters->AddObject(new IntVecParam(InversionControlParametersEnum,control_type,num_control_type));
    5657                        parameters->AddObject(new IntVecParam(InversionCostFunctionsEnum,cm_responses,num_cm_responses));
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r17850 r17895  
    7676        parameters->AddObject(iomodel->CopyConstantObject(QmuIsdakotaEnum));
    7777        parameters->AddObject(iomodel->CopyConstantObject(InversionIscontrolEnum));
    78         parameters->AddObject(iomodel->CopyConstantObject(InversionTaoEnum));
     78        parameters->AddObject(iomodel->CopyConstantObject(InversionTypeEnum));
    7979        parameters->AddObject(iomodel->CopyConstantObject(GiaCrossSectionShapeEnum));
    8080
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r17886 r17895  
    135135        InversionGradientScalingEnum,
    136136        InversionIscontrolEnum,
    137         InversionTaoEnum,
     137        InversionTypeEnum,
    138138        InversionIncompleteAdjointEnum,
    139139        InversionMaxParametersEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r17886 r17895  
    143143                case InversionGradientScalingEnum : return "InversionGradientScaling";
    144144                case InversionIscontrolEnum : return "InversionIscontrol";
    145                 case InversionTaoEnum : return "InversionTao";
     145                case InversionTypeEnum : return "InversionType";
    146146                case InversionIncompleteAdjointEnum : return "InversionIncompleteAdjoint";
    147147                case InversionMaxParametersEnum : return "InversionMaxParameters";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r17886 r17895  
    146146              else if (strcmp(name,"InversionGradientScaling")==0) return InversionGradientScalingEnum;
    147147              else if (strcmp(name,"InversionIscontrol")==0) return InversionIscontrolEnum;
    148               else if (strcmp(name,"InversionTao")==0) return InversionTaoEnum;
     148              else if (strcmp(name,"InversionType")==0) return InversionTypeEnum;
    149149              else if (strcmp(name,"InversionIncompleteAdjoint")==0) return InversionIncompleteAdjointEnum;
    150150              else if (strcmp(name,"InversionMaxParameters")==0) return InversionMaxParametersEnum;
  • issm/trunk-jpl/src/m/classes/inversion.m

    r17779 r17895  
    77        properties (SetAccess=public)
    88                iscontrol                   = 0
    9                 tao                         = 0
    109                incomplete_adjoint          = 0
    1110                control_parameters          = NaN
     
    8079                                                obj=inversion();
    8180                                                obj.iscontrol                   = in.iscontrol;
    82                                                 obj.tao                         = 1;rsion to inve
    8381                                                obj.incomplete_adjoint          = in.incomplete_adjoint;
    8482                                                obj.control_parameters          = in.control_parameters;
     
    152150
    153151                        md = checkfield(md,'fieldname','inversion.iscontrol','values',[0 1]);
    154                         md = checkfield(md,'fieldname','inversion.tao','values',[0 1]);
    155152                        md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0 1]);
    156153                        md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',...
     
    214211                        yts=365.0*24.0*3600.0;
    215212
     213                        WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer');
    216214                        WriteData(fid,'object',obj,'fieldname','iscontrol','format','Boolean');
    217                         WriteData(fid,'object',obj,'fieldname','tao','format','Boolean');
    218215                        WriteData(fid,'object',obj,'fieldname','incomplete_adjoint','format','Boolean');
    219216                        if ~obj.iscontrol, return; end
  • issm/trunk-jpl/src/m/classes/inversion.py

    r17780 r17895  
    1717        def __init__(self): # {{{
    1818                self.iscontrol                   = 0
    19                 self.tao                         = 0
    2019                self.incomplete_adjoint          = 0
    2120                self.control_parameters          = float('NaN')
     
    117116
    118117                md = checkfield(md,'fieldname','inversion.iscontrol','values',[0,1])
    119                 md = checkfield(md,'fieldname','inversion.tao','values',[0,1])
    120118                md = checkfield(md,'fieldname','inversion.incomplete_adjoint','values',[0,1])
    121119                md = checkfield(md,'fieldname','inversion.control_parameters','cell',1,'values',['BalancethicknessThickeningRate','FrictionCoefficient','MaterialsRheologyBbar','DamageDbar','Vx','Vy'])
     
    146144                yts=365.0*24.0*3600.0
    147145
     146                WriteData(fid,'enum',InversionTypeEnum(),'data',0,'format','Integer')
    148147                WriteData(fid,'object',self,'fieldname','iscontrol','format','Boolean')
    149                 WriteData(fid,'object',self,'fieldname','tao','format','Boolean')
    150148                WriteData(fid,'object',self,'fieldname','incomplete_adjoint','format','Boolean')
    151149                if not self.iscontrol:
  • issm/trunk-jpl/src/m/classes/taoinversion.m

    r16764 r17895  
    124124
    125125                        WriteData(fid,'object',obj,'class','inversion','fieldname','iscontrol','format','Boolean');
    126                         WriteData(fid,'enum',InversionTaoEnum(),'data',true,'format','Boolean');
     126                        WriteData(fid,'enum',InversionTypeEnum(),'data',1,'format','Integer');
    127127                        if ~obj.iscontrol, return; end
    128128                        WriteData(fid,'object',obj,'class','inversion','fieldname','incomplete_adjoint','format','Boolean');
  • issm/trunk-jpl/src/m/contrib/dassflow/importgmsh.m

    r17831 r17895  
    9898                        end
    9999                case 15, %point
     100                        A=fscanf(fid,'%i',1);
    100101                        continue;
    101102                otherwise,
     
    126127
    127128%Create model
    128 if 0, %2d triangles
     129if dim==2, %2d triangles
    129130        md=meshconvert(model,index,x,y);
    130131        md.mesh=mesh2dvertical(md.mesh);
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r17886 r17895  
    135135def InversionGradientScalingEnum(): return StringToEnum("InversionGradientScaling")[0]
    136136def InversionIscontrolEnum(): return StringToEnum("InversionIscontrol")[0]
    137 def InversionTaoEnum(): return StringToEnum("InversionTao")[0]
     137def InversionTypeEnum(): return StringToEnum("InversionType")[0]
    138138def InversionIncompleteAdjointEnum(): return StringToEnum("InversionIncompleteAdjoint")[0]
    139139def InversionMaxParametersEnum(): return StringToEnum("InversionMaxParameters")[0]
Note: See TracChangeset for help on using the changeset viewer.