Changeset 4491
- Timestamp:
- 07/08/10 19:32:23 (15 years ago)
- Location:
- issm/trunk
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/externalpackages/dakota/configs/linux64/configure.sh
r1060 r4491 1 1 #!/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 334 334 ./EnumDefinitions/EnumAsString.cpp\ 335 335 ./EnumDefinitions/StringAsEnum.cpp\ 336 ./EnumDefinitions/EnumAsModelField.cpp\ 336 337 ./modules/ModelProcessorx/ModelProcessorx.h\ 337 338 ./modules/ModelProcessorx/ModelProcessorx.cpp\ … … 883 884 ./EnumDefinitions/EnumAsString.cpp\ 884 885 ./EnumDefinitions/StringAsEnum.cpp\ 886 ./EnumDefinitions/EnumAsModelField.cpp\ 885 887 ./modules/ModelProcessorx/ModelProcessorx.h\ 886 888 ./modules/ModelProcessorx/ModelProcessorx.cpp\ -
issm/trunk/src/c/issm.cpp
r4401 r4491 100 100 #ifdef _HAVE_DAKOTA_ 101 101 MPI_Barrier(MPI_COMM_WORLD); start_core=MPI_Wtime( ); 102 Qmux(femmodel, DiagnosticAnalysisEnum,NoneAnalysisEnum);102 Qmux(femmodel,femmodel->parameters); 103 103 MPI_Barrier(MPI_COMM_WORLD); finish_core=MPI_Wtime( ); 104 104 #else -
issm/trunk/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
r4454 r4491 40 40 qmu_part=(double*)xmalloc(numberofvertices*sizeof(double)); 41 41 for(k=0;k<numberofvertices;k++) qmu_part[(int)(partition[k])]=qmu_part_serial[k]; 42 42 43 43 /*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and 44 44 * for each descriptor, take the variable value and plug it into the inputs: */ … … 58 58 } 59 59 else{ 60 60 61 61 /*Ok, variable is distributed. Root name of variable is also known. Now, allocate distributed_values and fill the 62 62 * distributed_values with the next qmu_npart variables: */ … … 67 67 } 68 68 69 69 70 /*Now, pick up the parameter corresponding to root: */ 70 parameters->FindParam(¶meter_serial,NULL,NULL,StringAsEnum(root)); 71 if(!parameters->FindParam(¶meter_serial,NULL,StringAsEnum(root))){ 72 ISSMERROR("%s%s"," could not find Qmu parameter: ",root); 73 } 71 74 72 75 /*repartition parameter: */ 73 76 parameter=(double*)xmalloc(numberofvertices*sizeof(double)); 74 77 for(k=0;k<numberofvertices;k++) parameter[(int)(partition[k])]=parameter_serial[k]; 75 78 76 79 /*We've got the parameter, we need to update it using qmu_part (a partitioning vector), and the distributed_values: */ 77 80 for(k=0;k<numberofvertices;k++){ -
issm/trunk/src/c/modules/ModelProcessorx/Qmu/CreateParametersQmu.cpp
r4428 r4491 142 142 descriptor=variabledescriptors[i]; 143 143 144 if ((strcmp(descriptor," thickness")==0) ||145 (strcmp(descriptor," drag") ==0)144 if ((strcmp(descriptor,"Thickness")==0) || 145 (strcmp(descriptor,"DragCoefficient") ==0) 146 146 ){ 147 147 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)); 150 150 xfree((void**)&dakota_parameter); 151 152 151 } 153 152 } -
issm/trunk/src/c/objects/DakotaPlugin.cpp
r4042 r4491 87 87 88 88 /*run core solution: */ 89 SpawnCore(responses,numFns, variables,variable_descriptors,numACV, model,counter);89 SpawnCore(responses,numFns, variables,variable_descriptors,numACV,femmodel,counter); 90 90 91 91 /*populate responses: */ -
issm/trunk/src/c/objects/Elements/Penta.cpp
r4479 r4491 1790 1790 this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs)); 1791 1791 this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs)); 1792 if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVxEnum,nodeinputs)); 1792 1793 } 1793 1794 if (iomodel->vy) { … … 1795 1796 this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs)); 1796 1797 this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs)); 1798 if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVyEnum,nodeinputs)); 1797 1799 } 1798 1800 if (iomodel->vz) { … … 1800 1802 this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs)); 1801 1803 this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs)); 1804 if(iomodel->qmu_analysis)this->inputs->AddInput(new PentaVertexInput(QmuVzEnum,nodeinputs)); 1802 1805 } 1803 1806 if (iomodel->vx_obs) { … … 1833 1836 this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs)); 1834 1837 this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs)); 1838 if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVxEnum,nodeinputs)); 1835 1839 } 1836 1840 if(!iomodel->vy){ … … 1839 1843 this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs)); 1840 1844 this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs)); 1845 if(iomodel->qmu_analysis) this->inputs->AddInput(new PentaVertexInput(QmuVyEnum,nodeinputs)); 1841 1846 } 1842 1847 if(!iomodel->vz){ … … 1845 1850 this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs)); 1846 1851 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 } 1847 1860 } 1848 1861 break; -
issm/trunk/src/c/objects/Elements/Tria.cpp
r4475 r4491 2295 2295 this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs)); 2296 2296 this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs)); 2297 if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVxEnum,nodeinputs)); 2297 2298 } 2298 2299 if (iomodel->vy) { … … 2300 2301 this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs)); 2301 2302 this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs)); 2303 if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVyEnum,nodeinputs)); 2302 2304 } 2303 2305 if (iomodel->vz) { … … 2305 2307 this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs)); 2306 2308 this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs)); 2309 if(iomodel->qmu_analysis)this->inputs->AddInput(new TriaVertexInput(QmuVzEnum,nodeinputs)); 2307 2310 } 2308 2311 if (iomodel->vx_obs) { … … 2338 2341 this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs)); 2339 2342 this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs)); 2343 if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVxEnum,nodeinputs)); 2340 2344 } 2341 2345 if(!iomodel->vy){ … … 2344 2348 this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs)); 2345 2349 this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs)); 2350 if(iomodel->qmu_analysis) this->inputs->AddInput(new TriaVertexInput(QmuVyEnum,nodeinputs)); 2346 2351 } 2347 2352 if(!iomodel->vz){ … … 2350 2355 this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs)); 2351 2356 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 } 2352 2365 } 2353 2366 break; -
issm/trunk/src/c/objects/Vertex.cpp
r4482 r4491 258 258 void Vertex::CreatePartition(Vec partition){ 259 259 260 int idxm;261 260 double value; 262 261 263 idxm=(sid-1);264 262 value=(double)this->dof; 265 263 ISSMASSERT(value>=0); 266 264 267 VecSetValues(partition,1,& idxm,&value,INSERT_VALUES);265 VecSetValues(partition,1,&sid,&value,INSERT_VALUES); 268 266 269 267 return; -
issm/trunk/src/m/dakota/setupdesign/QmuSetupDesign.m
r2157 r4491 5 5 6 6 %loop on descriptor 7 if strcmpi(descriptor,' rho_ice')7 if strcmpi(descriptor,'RhoIce') 8 8 9 9 dvar=setuprhoice(dvar,variables,params,varargin{:}); 10 10 11 elseif strcmpi(descriptor,' rho_water')11 elseif strcmpi(descriptor,'RhoWater') 12 12 13 13 dvar=setuprhowater(dvar,variables,params,varargin{:}); 14 14 15 elseif strcmpi(descriptor,' heatcapacity')15 elseif strcmpi(descriptor,'HeatCapacity') 16 16 17 17 dvar=setupheatcapacity(dvar,variables,params,varargin{:}); 18 18 19 elseif strcmpi(descriptor,' thermalconductivity')19 elseif strcmpi(descriptor,'ThermalConductivity') 20 20 21 21 dvar=setupthermalconductivity(dvar,variables,params,varargin{:}); 22 22 23 elseif strcmpi(descriptor,' gravity')23 elseif strcmpi(descriptor,'Gravity') 24 24 25 25 dvar=setupgravity(dvar,variables,params,varargin{:}); 26 26 27 elseif strcmpi(descriptor,' thickness')27 elseif strcmpi(descriptor,'Thickness') 28 28 29 29 dvar=setupthickness(dvar,variables,params,varargin{:}); 30 30 31 elseif strcmpi(descriptor,' drag')31 elseif strcmpi(descriptor,'DragCoefficient') 32 32 33 33 dvar=setupdrag(dvar,variables,params,varargin{:}); 34 34 35 elseif strncmpi(descriptor,' drag_node',9)35 elseif strncmpi(descriptor,'DragCoefficientNode',9) 36 36 37 37 dvar=setupdrag_node(dvar,variables,params,varargin{:}); 38 38 39 elseif strncmpi(descriptor,' thickness_node',14)39 elseif strncmpi(descriptor,'ThicknessNode',14) 40 40 41 41 dvar=setupthickness_node(dvar,variables,params,varargin{:}); 42 42 43 elseif strcmpi(descriptor,' riftsfriction')43 elseif strcmpi(descriptor,'RiftsFriction') 44 44 45 45 dvar=setupriftsfriction(dvar,variables,params,varargin{:}); -
issm/trunk/src/m/solutions/SpawnCore.m
r4454 r4491 8 8 %retrieve parameters 9 9 verbose=femmodel.parameters.Verbose; 10 responsedescriptors=femmodel.parameters. responsedescriptors;10 responsedescriptors=femmodel.parameters.ResponseDescriptors; 11 11 solution_type=femmodel.parameters.SolutionType; 12 12 … … 14 14 15 15 %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.part ition,variables,variabledescriptors);16 [femmodel.elements femmodel.loads]=InputUpdateFromDakota(femmodel.elements,femmodel.nodes,femmodel.vertices,femmodel.loads,femmodel.materials,femmodel.parameters,femmodel.part,variables,variabledescriptors); 17 17 18 18 %now run the core solution -
issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.cpp
r4454 r4491 38 38 FetchParams(¶meters,PARAMETERSIN); 39 39 FetchData(&partition,PARTITION); 40 40 VecShift(partition,-1.0); //get partition onto "c" indexing 41 41 /*dakota input: */ 42 42 FetchData(&variables,&numvariables,VARIABLES); … … 44 44 variables_descriptors=(char**)xmalloc(numvariables*sizeof(char*)); 45 45 for(i=0;i<numvariables;i++){ 46 46 47 47 pfield=mxGetCell(VARIABLESDESCRIPTORS,i); 48 48 stringlength = (mxGetM(pfield) * mxGetN(pfield) * sizeof(mxChar)) + 1 ; 49 49 mxGetString(pfield,string,stringlength); 50 50 51 51 variables_descriptors[i]=string; 52 52 } 53 53 54 54 /*!Generate internal degree of freedom numbers: */ 55 55 InputUpdateFromDakotax(elements,nodes,vertices,loads, materials,parameters,partition,variables,variables_descriptors,numvariables); -
issm/trunk/src/mex/InputUpdateFromDakota/InputUpdateFromDakota.h
r4454 r4491 39 39 40 40 #endif /* _UPDATEINPUTSFROMDAKOTA_H */ 41 -
issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/Square.par
r3757 r4491 2 2 3 3 %dynamics 4 md.verbose= 0;4 md.verbose=1; 5 5 md.dt=1; %1 year 6 6 md.ndt=md.dt*10; 7 7 md.artificial_diffusivity=0; 8 md.mem_debug=1; 8 9 9 10 hmin=300; … … 41 42 %Dakota options 42 43 md.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);44 md.variables.nuv(end+1)=normal_uncertain('RhoIce',1,0.01); 45 md.variables.nuv(end+1)=normal_uncertain('DragCoefficient',1,0.01); 45 46 46 47 md.responses=struct(); … … 48 49 md.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]); 49 50 50 md. drag_qmu_method =dakota_method('nond_l');51 md.qmu_method =dakota_method('nond_l'); 51 52 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;53 md.qmu_params.direct=true; 54 md.qmu_params.analysis_driver='diagnostic'; 55 md.qmu_params.evaluation_concurrency=1; 56 md.qmu_params.interval_type='forward'; 57 md.qmu_params.tabular_graphics_data=true; 57 58 58 md. drag_part=0:1:md.numberofgrids-1;59 md. drag_part=md.drag_part';59 md.part=0:1:md.numberofgrids-1; 60 md.part=md.part'; 60 61 md.npart=md.numberofgrids; 61 md. drag_qmu_analysis=1;62 md.qmu_analysis=1; 62 63 63 64 md.eps_rel=10^-10; %tighten for qmu analysese -
issm/trunk/test/Verification/test25_IceSheetIceFrontM2dDakota/configuration.m
r4258 r4491 24 24 %sequences analysis sub_analysis qmu control control_fit parallel 25 25 sequences={ {DiagnosticSolutionEnum, NoneAnalysisEnum, 1 , 0, 'nan' 0 };... 26 26 {DiagnosticSolutionEnum, NoneAnalysisEnum, 1 , 0, 'nan' 1 };... 27 27 };
Note:
See TracChangeset
for help on using the changeset viewer.