Changeset 24157
- Timestamp:
- 09/24/19 14:21:33 (5 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24119 r24157 5946 5946 break; 5947 5947 5948 case ElementEnum: 5949 IssmDouble value; 5950 /*Get value for the element: */ 5951 value=vector[this->Sid()]; //careful, vector of values here is not parallel distributed, but serial distributed (from a serial Dakota core!) 5952 this->inputs->AddInput(new TriaInput(name,&value,P0Enum)); 5953 break; 5948 5954 default: 5949 5955 _error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet"); -
issm/trunk-jpl/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
r22617 r24157 16 16 17 17 int numberofvertices; 18 int numberofelements; 18 19 int nrows; 19 20 int ncols; 20 21 int npart; 21 22 double *qmu_part = NULL; 23 int qmu_npart; 22 24 23 25 double *distributed_values = NULL; … … 28 30 /*retrieve parameters: */ 29 31 femmodel->parameters->FindParam(&npart,QmuNumberofpartitionsEnum); 30 femmodel->parameters->FindParam(&qmu_part,& dummy,QmuPartitionEnum);32 femmodel->parameters->FindParam(&qmu_part,&qmu_npart,QmuPartitionEnum); 31 33 numberofvertices=femmodel->vertices->NumberOfVertices(); 34 numberofelements=femmodel->elements->NumberOfElements(); 32 35 33 36 /*Go through all dakota descriptors, ex: "rho_ice","thermal_conductivity","thickness1","thickness2", etc ..., and … … 56 59 femmodel->parameters->FindParamInDataset(¶meter,&nrows,&ncols,QmuVariableDescriptorsEnum,StringToEnumx(root)); 57 60 58 /*We've got the parameter, we need to update it using qmu_part (a partitioning vector), 59 * and the distributed_values. Two cases: we either have a nrows=numberofvertices, in 60 * which case our parameter is a vector, or nrows=numberofvertices+1, in which case, 61 * our parameter is a transient vector. Deal with both cases accordingly: */ 62 for(k=0;k<numberofvertices;k++){ 63 for(l=0;l<ncols;l++){ 64 *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]]; 61 62 /*We've got the parameter, we need to update it using qmu_part and the distributed_values. 63 * Several cases: we either have a nrows=numberofvertices or nrows=numberofelements, and 64 * in addition, it can be either a static or transient (nrows+1) vector. 65 * Deal with both cases accordingly: */ 66 //_printf_("nrows: " << nrows << " numberofvertices: " << numberofvertices << " qmu_npart: " << qmu_npart << "\n"); 67 68 if (qmu_npart==numberofvertices){ 69 for(k=0;k<numberofvertices;k++){ 70 for(l=0;l<ncols;l++){ 71 *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]]; 72 } 65 73 } 66 74 } 75 else if (qmu_npart==numberofelements){ 76 for(k=0;k<numberofelements;k++){ 77 for(l=0;l<ncols;l++){ 78 *(parameter+ncols*k+l)=*(parameter+ncols*k+l)*distributed_values[(int)qmu_part[k]]; 79 } 80 } 81 82 } 83 else _error_("partitioning vector should be either elements or vertex sized!"); 67 84 68 85 #ifdef _DEBUG_ … … 83 100 84 101 /*Update inputs using the parameter matrix: */ 85 InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), VertexEnum); 102 if(qmu_npart==numberofvertices) 103 InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), VertexEnum); 104 else 105 InputUpdateFromMatrixDakotax(femmodel, parameter, nrows,ncols,StringToEnumx(root), ElementEnum); 86 106 87 107 /*increment i to skip the distributed values just collected: */ -
issm/trunk-jpl/src/c/modules/InputUpdateFromMatrixDakotax/InputUpdateFromMatrixDakotax.cpp
r23529 r24157 11 11 12 12 int i; 13 int numberofvertices ;13 int numberofvertices,numberofelements; 14 14 15 15 numberofvertices=femmodel->vertices->NumberOfVertices(); 16 numberofelements=femmodel->elements->NumberOfElements(); 16 17 17 if((ncols==1) && (nrows==numberofvertices )) InputUpdateFromVectorDakotax(femmodel,matrix,name,type);18 if((ncols==1) && (nrows==numberofvertices | nrows==numberofelements)) InputUpdateFromVectorDakotax(femmodel,matrix,name,type); 18 19 else{ 19 20 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Dakota/CreateParametersDakota.cpp
r23505 r24157 15 15 int *part = NULL; 16 16 double *dpart = NULL; 17 int npart; 17 18 char **responsedescriptors = NULL; 18 19 int numresponsedescriptors; … … 68 69 /*partition vertices in iomodel->qmu_npart parts, unless a partition is already present: */ 69 70 parameters->AddObject(iomodel->CopyConstantObject("md.qmu.numberofpartitions",QmuNumberofpartitionsEnum)); 70 iomodel->FetchData(&dpart, NULL,NULL,"md.qmu.partition");71 iomodel->FetchData(&dpart,&npart,NULL,"md.qmu.partition"); 71 72 if(!dpart) _error_("md.qmu.partition is empty"); 72 parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart, iomodel->numberofvertices));73 parameters->AddObject(new DoubleVecParam(QmuPartitionEnum,dpart,npart)); 73 74 74 75 /*Deal with data needed because of qmu variables*/ -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r24145 r24157 163 163 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 164 164 } 165 else if(strcmp(string_in,"SealevelriseDeltathickness")==0){ 166 const char* field = "md.slr.deltathickness"; 167 input_enum = SealevelriseDeltathicknessEnum; 168 fieldname=xNew<char>((strlen(field)+1)); xMemCpy<char>(fieldname,field,(strlen(field)+1)); 169 } 165 170 else{ 166 171 _error_("Field \""<<string_in<<"\" not supported yet");
Note:
See TracChangeset
for help on using the changeset viewer.