Changeset 4491


Ignore:
Timestamp:
07/08/10 19:32:23 (15 years ago)
Author:
Eric.Larour
Message:

Debugging of Qmu solution.

Location:
issm/trunk
Files:
15 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/externalpackages/dakota/configs/linux64/configure.sh

    r1060 r4491  
    11#!/bin/bash
    2 ./configure --prefix="$ISSM_DIR/externalpackages/dakota/install" --without-graphics  --with-pic --disable-mpi
     2./configure --prefix="$ISSM_DIR/externalpackages/dakota/install" --without-graphics  --with-pic --disable-mpi --with-blas=/usr/lib64/libblas.so.3.0.3 --with-lapack=/usr/lib64/liblapack.so.3.0.3
  • issm/trunk/src/c/Makefile.am

    r4458 r4491  
    334334                                        ./EnumDefinitions/EnumAsString.cpp\
    335335                                        ./EnumDefinitions/StringAsEnum.cpp\
     336                                        ./EnumDefinitions/EnumAsModelField.cpp\
    336337                                        ./modules/ModelProcessorx/ModelProcessorx.h\
    337338                                        ./modules/ModelProcessorx/ModelProcessorx.cpp\
     
    883884                                        ./EnumDefinitions/EnumAsString.cpp\
    884885                                        ./EnumDefinitions/StringAsEnum.cpp\
     886                                        ./EnumDefinitions/EnumAsModelField.cpp\
    885887                                        ./modules/ModelProcessorx/ModelProcessorx.h\
    886888                                        ./modules/ModelProcessorx/ModelProcessorx.cpp\
  • issm/trunk/src/c/issm.cpp

    r4401 r4491  
    100100                #ifdef _HAVE_DAKOTA_
    101101                MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( );
    102                 Qmux(femmodel,DiagnosticAnalysisEnum,NoneAnalysisEnum);
     102                Qmux(femmodel,femmodel->parameters);
    103103                MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( );
    104104                #else
  • issm/trunk/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp

    r4454 r4491  
    4040        qmu_part=(double*)xmalloc(numberofvertices*sizeof(double));
    4141        for(k=0;k<numberofvertices;k++) qmu_part[(int)(partition[k])]=qmu_part_serial[k];
    42        
     42
    4343        /*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and
    4444         * for each descriptor, take the variable value and plug it into the inputs: */
     
    5858                }
    5959                else{
    60                        
     60
    6161                        /*Ok, variable is distributed. Root name of variable is also known. Now, allocate distributed_values and fill the
    6262                         * distributed_values with the next qmu_npart variables: */
     
    6767                        }
    6868
     69               
    6970                        /*Now, pick up the parameter corresponding to root: */
    70                         parameters->FindParam(&parameter_serial,NULL,NULL,StringAsEnum(root));
     71                        if(!parameters->FindParam(&parameter_serial,NULL,StringAsEnum(root))){
     72                                ISSMERROR("%s%s"," could not find Qmu parameter: ",root);
     73                        }
    7174
    7275                        /*repartition parameter: */
    7376                        parameter=(double*)xmalloc(numberofvertices*sizeof(double));
    7477                        for(k=0;k<numberofvertices;k++) parameter[(int)(partition[k])]=parameter_serial[k];
    75 
     78                       
    7679                        /*We've got the parameter, we need to update it using qmu_part (a partitioning vector), and the distributed_values: */
    7780                        for(k=0;k<numberofvertices;k++){
  • issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp

    r4428 r4491  
    142142                        descriptor=variabledescriptors[i];
    143143
    144                         if ((strcmp(descriptor,"thickness")==0) ||
    145                                 (strcmp(descriptor,"drag")     ==0)
     144                        if ((strcmp(descriptor,"Thickness")==0) ||
     145                                (strcmp(descriptor,"DragCoefficient")     ==0)
    146146                                ){
    147147
    148                                 IoModelFetchData(&dakota_parameter,NULL,NULL,iomodel_handle,descriptor);
    149                                 parameters->AddObject(new DoubleVecParam(DakotaParameterEnum,dakota_parameter,iomodel->numberofvertices));
     148                                IoModelFetchData(&dakota_parameter,NULL,NULL,iomodel_handle,EnumAsModelField(StringAsEnum(descriptor)));
     149                                parameters->AddObject(new DoubleVecParam(StringAsEnum(descriptor),dakota_parameter,iomodel->numberofvertices));
    150150                                xfree((void**)&dakota_parameter);
    151 
    152151                        }
    153152                }
  • issm/trunk/src/c/objects/DakotaPlugin.cpp

    r4042 r4491  
    8787
    8888        /*run core solution: */
    89         SpawnCore(responses,numFns, variables,variable_descriptors,numACV,model,counter);
     89        SpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter);
    9090
    9191        /*populate responses: */
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r4479 r4491  
    17901790                this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
    17911791                this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
     1792                if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVxEnum,nodeinputs));
    17921793        }
    17931794        if (iomodel->vy) {
     
    17951796                this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
    17961797                this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
     1798                if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVyEnum,nodeinputs));
    17971799        }
    17981800        if (iomodel->vz) {
     
    18001802                this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
    18011803                this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
     1804                if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVzEnum,nodeinputs));
    18021805        }
    18031806        if (iomodel->vx_obs) {
     
    18331836                                this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
    18341837                                this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
     1838                                if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVxEnum,nodeinputs));
    18351839                        }
    18361840                        if(!iomodel->vy){
     
    18391843                                this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
    18401844                                this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
     1845                                if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVyEnum,nodeinputs));
    18411846                        }
    18421847                        if(!iomodel->vz){
     
    18451850                                this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
    18461851                                this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
     1852                                if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVzEnum,nodeinputs));
     1853                        }
     1854                        if(!iomodel->pressure){
     1855                                for(i=0;i<6;i++)nodeinputs[i]=0;
     1856                                if(iomodel->qmu_analysis){
     1857                                        this->inputs->AddInput(new PentaVertexInput(PressureEnum,nodeinputs));
     1858                                        this->inputs->AddInput(new PentaVertexInput(QmuPressureEnum,nodeinputs));
     1859                                }
    18471860                        }
    18481861                        break;
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r4475 r4491  
    22952295                this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
    22962296                this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
     2297                if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVxEnum,nodeinputs));
    22972298        }
    22982299        if (iomodel->vy) {
     
    23002301                this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
    23012302                this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
     2303                if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVyEnum,nodeinputs));
    23022304        }
    23032305        if (iomodel->vz) {
     
    23052307                this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
    23062308                this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
     2309                if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVzEnum,nodeinputs));
    23072310        }
    23082311        if (iomodel->vx_obs) {
     
    23382341                                this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
    23392342                                this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
     2343                                if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVxEnum,nodeinputs));
    23402344                        }
    23412345                        if(!iomodel->vy){
     
    23442348                                this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
    23452349                                this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
     2350                                if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVyEnum,nodeinputs));
    23462351                        }
    23472352                        if(!iomodel->vz){
     
    23502355                                this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
    23512356                                this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
     2357                                if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVzEnum,nodeinputs));
     2358                        }
     2359                        if(!iomodel->pressure){
     2360                                for(i=0;i<3;i++)nodeinputs[i]=0;
     2361                                if(iomodel->qmu_analysis){
     2362                                        this->inputs->AddInput(new TriaVertexInput(PressureEnum,nodeinputs));
     2363                                        this->inputs->AddInput(new TriaVertexInput(QmuPressureEnum,nodeinputs));
     2364                                }
    23522365                        }
    23532366                        break;
  • issm/trunk/src/c/objects/Vertex.cpp

    r4482 r4491  
    258258void  Vertex::CreatePartition(Vec partition){
    259259
    260         int      idxm;
    261260        double   value;
    262261
    263         idxm=(sid-1);
    264262        value=(double)this->dof;
    265263        ISSMASSERT(value>=0);
    266264
    267         VecSetValues(partition,1,&idxm,&value,INSERT_VALUES);
     265        VecSetValues(partition,1,&sid,&value,INSERT_VALUES);
    268266
    269267        return;
  • issm/trunk/src/m/dakota/setupdesign/QmuSetupDesign.m

    r2157 r4491  
    55
    66%loop on descriptor
    7 if strcmpi(descriptor,'rho_ice')
     7if strcmpi(descriptor,'RhoIce')
    88
    99        dvar=setuprhoice(dvar,variables,params,varargin{:});
    1010
    11 elseif strcmpi(descriptor,'rho_water')
     11elseif strcmpi(descriptor,'RhoWater')
    1212
    1313        dvar=setuprhowater(dvar,variables,params,varargin{:});
    1414
    15 elseif strcmpi(descriptor,'heatcapacity')
     15elseif strcmpi(descriptor,'HeatCapacity')
    1616
    1717        dvar=setupheatcapacity(dvar,variables,params,varargin{:});
    1818
    19 elseif strcmpi(descriptor,'thermalconductivity')
     19elseif strcmpi(descriptor,'ThermalConductivity')
    2020
    2121        dvar=setupthermalconductivity(dvar,variables,params,varargin{:});
    2222
    23 elseif strcmpi(descriptor,'gravity')
     23elseif strcmpi(descriptor,'Gravity')
    2424
    2525        dvar=setupgravity(dvar,variables,params,varargin{:});
    2626
    27 elseif strcmpi(descriptor,'thickness')
     27elseif strcmpi(descriptor,'Thickness')
    2828
    2929        dvar=setupthickness(dvar,variables,params,varargin{:});
    3030
    31 elseif strcmpi(descriptor,'drag')
     31elseif strcmpi(descriptor,'DragCoefficient')
    3232
    3333        dvar=setupdrag(dvar,variables,params,varargin{:});
    3434
    35 elseif strncmpi(descriptor,'drag_node',9)
     35elseif strncmpi(descriptor,'DragCoefficientNode',9)
    3636
    3737        dvar=setupdrag_node(dvar,variables,params,varargin{:});
    3838
    39 elseif strncmpi(descriptor,'thickness_node',14)
     39elseif strncmpi(descriptor,'ThicknessNode',14)
    4040
    4141        dvar=setupthickness_node(dvar,variables,params,varargin{:});
    4242
    43 elseif strcmpi(descriptor,'riftsfriction')
     43elseif strcmpi(descriptor,'RiftsFriction')
    4444
    4545        dvar=setupriftsfriction(dvar,variables,params,varargin{:});
  • issm/trunk/src/m/solutions/SpawnCore.m

    r4454 r4491  
    88%retrieve parameters
    99verbose=femmodel.parameters.Verbose;
    10 responsedescriptors=femmodel.parameters.responsedescriptors;
     10responsedescriptors=femmodel.parameters.ResponseDescriptors;
    1111solution_type=femmodel.parameters.SolutionType;
    1212
     
    1414
    1515%first update the inputs to the femmodel using the variables provided to us by dakota.
    16 [femmodel.elements femmodel.loads]=InputUpdateFromDakota(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,femmodel.partition,variables,variabledescriptors);
     16[femmodel.elements femmodel.loads]=InputUpdateFromDakota(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,femmodel.part,variables,variabledescriptors);
    1717
    1818%now run the core solution
  • issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp

    r4454 r4491  
    3838        FetchParams(&parameters,PARAMETERSIN);
    3939        FetchData(&partition,PARTITION);
    40        
     40        VecShift(partition,-1.0); //get partition onto "c" indexing
    4141        /*dakota input: */
    4242        FetchData(&variables,&numvariables,VARIABLES);
     
    4444        variables_descriptors=(char**)xmalloc(numvariables*sizeof(char*));
    4545        for(i=0;i<numvariables;i++){
    46                
     46
    4747                pfield=mxGetCell(VARIABLESDESCRIPTORS,i);
    4848                stringlength = (mxGetM(pfield) * mxGetN(pfield) * sizeof(mxChar)) + 1 ;
    4949                mxGetString(pfield,string,stringlength);
    50                
     50
    5151                variables_descriptors[i]=string;
    5252        }
    53        
     53
    5454        /*!Generate internal degree of freedom numbers: */
    5555        InputUpdateFromDakotax(elements,nodes,vertices,loads, materials,parameters,partition,variables,variables_descriptors,numvariables);
  • issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.h

    r4454 r4491  
    3939
    4040#endif  /* _UPDATEINPUTSFROMDAKOTA_H */
    41 
  • issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/Square.par

    r3757 r4491  
    22
    33%dynamics
    4 md.verbose=0;
     4md.verbose=1;
    55md.dt=1; %1 year
    66md.ndt=md.dt*10;
    77md.artificial_diffusivity=0;
     8md.mem_debug=1;
    89
    910hmin=300;
     
    4142%Dakota options
    4243md.variables.nuv=normal_uncertain.empty();
    43 md.variables.nuv(end+1)=normal_uncertain('rho_ice',1,0.01);
    44 md.variables.nuv(end+1)=normal_uncertain('drag',1,0.01);
     44md.variables.nuv(end+1)=normal_uncertain('RhoIce',1,0.01);
     45md.variables.nuv(end+1)=normal_uncertain('DragCoefficient',1,0.01);
    4546
    4647md.responses=struct();
     
    4849md.responses.rf (end+1)=response_function('max_vel',[],[0.0001 0.001 0.01 0.25 0.5 0.75 0.99 0.999 0.9999]);
    4950
    50 md.drag_qmu_method     =dakota_method('nond_l');
     51md.qmu_method     =dakota_method('nond_l');
    5152
    52 md.drag_qmu_params.direct=true;
    53 md.drag_qmu_params.analysis_driver='diagnostic';
    54 md.drag_qmu_params.evaluation_concurrency=1;
    55 md.drag_qmu_params.interval_type='forward';
    56 md.drag_qmu_params.tabular_graphics_data=true;
     53md.qmu_params.direct=true;
     54md.qmu_params.analysis_driver='diagnostic';
     55md.qmu_params.evaluation_concurrency=1;
     56md.qmu_params.interval_type='forward';
     57md.qmu_params.tabular_graphics_data=true;
    5758
    58 md.drag_part=0:1:md.numberofgrids-1;
    59 md.drag_part=md.drag_part';
     59md.part=0:1:md.numberofgrids-1;
     60md.part=md.part';
    6061md.npart=md.numberofgrids;
    61 md.drag_qmu_analysis=1;
     62md.qmu_analysis=1;
    6263
    6364md.eps_rel=10^-10; %tighten for qmu analysese
  • issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/configuration.m

    r4258 r4491  
    2424%sequences     analysis    sub_analysis  qmu   control  control_fit parallel
    2525sequences={  {DiagnosticSolutionEnum,  NoneAnalysisEnum,      1 ,     0,      'nan'        0    };...
    26                                 {DiagnosticSolutionEnum,  NoneAnalysisEnum,      1 ,     0,      'nan'        1    };...
     26                        {DiagnosticSolutionEnum,  NoneAnalysisEnum,      1 ,     0,      'nan'        1    };...
    2727        };
Note: See TracChangeset for help on using the changeset viewer.