Changeset 1836
- Timestamp:
- 08/24/09 17:54:44 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp
r1104 r1836 13 13 #include "../../include/macros.h" 14 14 #include "../../MeshPartitionx/MeshPartitionx.h" 15 #include "../ Model.h"16 17 void CreateParametersQmu(DataSet** pparameters, Model* model,ConstDataHandlemodel_handle){15 #include "../IoModel.h" 16 17 void CreateParametersQmu(DataSet** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){ 18 18 19 19 int i; … … 52 52 count++; 53 53 param= new Param(count,"qmu_analysis",INTEGER); 54 param->SetInteger( model->qmu_analysis);54 param->SetInteger(iomodel->qmu_analysis); 55 55 parameters->AddObject(param); 56 56 57 57 58 if( model->qmu_analysis){58 if(iomodel->qmu_analysis){ 59 59 //name of qmu input, error and output files 60 qmuinname=(char*)xmalloc((strlen( model->name)+strlen(".qmu.in")+1)*sizeof(char));61 sprintf(qmuinname,"%s%s", model->name,".qmu.in");60 qmuinname=(char*)xmalloc((strlen(iomodel->name)+strlen(".qmu.in")+1)*sizeof(char)); 61 sprintf(qmuinname,"%s%s",iomodel->name,".qmu.in"); 62 62 63 63 count++; … … 66 66 parameters->AddObject(param); 67 67 68 qmuoutname=(char*)xmalloc((strlen( model->name)+strlen(".qmu.out")+1)*sizeof(char));69 sprintf(qmuoutname,"%s%s", model->name,".qmu.out");68 qmuoutname=(char*)xmalloc((strlen(iomodel->name)+strlen(".qmu.out")+1)*sizeof(char)); 69 sprintf(qmuoutname,"%s%s",iomodel->name,".qmu.out"); 70 70 71 71 count++; … … 74 74 parameters->AddObject(param); 75 75 76 qmuerrname=(char*)xmalloc((strlen( model->name)+strlen(".qmu.err")+1)*sizeof(char));77 sprintf(qmuerrname,"%s%s", model->name,".qmu.err");76 qmuerrname=(char*)xmalloc((strlen(iomodel->name)+strlen(".qmu.err")+1)*sizeof(char)); 77 sprintf(qmuerrname,"%s%s",iomodel->name,".qmu.err"); 78 78 79 79 count++; … … 85 85 count++; 86 86 param= new Param(count,"qmu_npart",INTEGER); 87 param->SetInteger( model->qmu_npart);88 parameters->AddObject(param); 89 90 /*Deal with variables for qmu modeling: */91 variabledescriptors=(char**)xmalloc( model->numberofvariables*sizeof(char*));87 param->SetInteger(iomodel->qmu_npart); 88 parameters->AddObject(param); 89 90 /*Deal with variables for qmu iomodeling: */ 91 variabledescriptors=(char**)xmalloc(iomodel->numberofvariables*sizeof(char*)); 92 92 93 93 /*Fetch descriptors: logic varies if we are running parallel or serial. In parallel, qmumarshall … … 96 96 97 97 #ifdef _SERIAL_ 98 pfield=mxGetField( model_handle,0,"variabledescriptors");99 for(i=0;i< model->numberofvariables;i++){98 pfield=mxGetField(iomodel_handle,0,"variabledescriptors"); 99 for(i=0;i<iomodel->numberofvariables;i++){ 100 100 pfield2=mxGetCell(pfield,i); 101 101 FetchData((void**)&descriptor,NULL,NULL,pfield2,"String",NULL); … … 104 104 #else 105 105 tag=(char*)xmalloc((strlen("variabledescriptori")+1)*sizeof(char)); 106 for(i=0;i< model->numberofvariables;i++){106 for(i=0;i<iomodel->numberofvariables;i++){ 107 107 sprintf(tag,"%s%i","variabledescriptor",i); 108 ModelFetchData((void**)&descriptor,NULL,NULL,model_handle,tag,"String",NULL);108 IoModelFetchData((void**)&descriptor,NULL,NULL,iomodel_handle,tag,"String",NULL); 109 109 variabledescriptors[i]=descriptor; 110 110 } … … 114 114 count++; 115 115 param= new Param(count,"variabledescriptors",STRINGARRAY); 116 param->SetStringArray(variabledescriptors, model->numberofvariables);117 parameters->AddObject(param); 118 119 120 /*Deal with responses and partition for qmu modeling: */121 responsedescriptors=(char**)xmalloc( model->numberofresponses*sizeof(char*));116 param->SetStringArray(variabledescriptors,iomodel->numberofvariables); 117 parameters->AddObject(param); 118 119 120 /*Deal with responses and partition for qmu iomodeling: */ 121 responsedescriptors=(char**)xmalloc(iomodel->numberofresponses*sizeof(char*)); 122 122 123 123 /*Fetch descriptors: */ 124 124 #ifdef _SERIAL_ 125 pfield=mxGetField( model_handle,0,"responsedescriptors");126 for(i=0;i< model->numberofresponses;i++){125 pfield=mxGetField(iomodel_handle,0,"responsedescriptors"); 126 for(i=0;i<iomodel->numberofresponses;i++){ 127 127 pfield2=mxGetCell(pfield,i); 128 128 FetchData((void**)&descriptor,NULL,NULL,pfield2,"String",NULL); … … 133 133 tag=(char*)xmalloc((strlen("responsedescriptori")+1)*sizeof(char)); 134 134 135 for(i=0;i< model->numberofresponses;i++){135 for(i=0;i<iomodel->numberofresponses;i++){ 136 136 sprintf(tag,"%s%i","responsedescriptor",i); 137 ModelFetchData((void**)&descriptor,NULL,NULL,model_handle,tag,"String",NULL);137 IoModelFetchData((void**)&descriptor,NULL,NULL,iomodel_handle,tag,"String",NULL); 138 138 responsedescriptors[i]=descriptor; 139 139 } … … 143 143 count++; 144 144 param= new Param(count,"responsedescriptors",STRINGARRAY); 145 param->SetStringArray(responsedescriptors, model->numberofresponses);145 param->SetStringArray(responsedescriptors,iomodel->numberofresponses); 146 146 parameters->AddObject(param); 147 147 148 148 #ifdef _DEBUG_ 149 for(i=0;i< model->numberofvariables;i++){149 for(i=0;i<iomodel->numberofvariables;i++){ 150 150 _printf_("variable descriptor %s\n",variabledescriptors[i]); 151 151 } 152 152 153 for(i=0;i< model->numberofresponses;i++){153 for(i=0;i<iomodel->numberofresponses;i++){ 154 154 _printf_("response descriptor %s\n",responsedescriptors[i]); 155 155 } 156 156 #endif 157 157 158 /*partition grids in model->qmu_npart parts, unless a partition is already present: */159 ModelFetchData((void**)&dpart,NULL,NULL,model_handle,"part","Matrix","Mat");158 /*partition grids in iomodel->qmu_npart parts, unless a partition is already present: */ 159 IoModelFetchData((void**)&dpart,NULL,NULL,iomodel_handle,"part","Matrix","Mat"); 160 160 161 161 if(!dpart){ 162 162 163 if(strcmp( model->meshtype,"2d")==0){164 ModelFetchData((void**)&model->elements,NULL,NULL,model_handle,"elements","Matrix","Mat");163 if(strcmp(iomodel->meshtype,"2d")==0){ 164 IoModelFetchData((void**)&iomodel->elements,NULL,NULL,iomodel_handle,"elements","Matrix","Mat"); 165 165 elements_width=3; //tria elements 166 166 } 167 167 else{ 168 ModelFetchData((void**)&model->elements2d,NULL,NULL,model_handle,"elements2d","Matrix","Mat");168 IoModelFetchData((void**)&iomodel->elements2d,NULL,NULL,iomodel_handle,"elements2d","Matrix","Mat"); 169 169 elements_width=6; //penta elements 170 170 } 171 171 172 MeshPartitionx(&epart, &part, model->numberofelements,model->numberofnodes,model->elements, model->numberofelements2d,model->numberofnodes2d,model->elements2d,model->numlayers,elements_width, model->meshtype,model->qmu_npart);173 174 dpart=(double*)xmalloc( model->numberofnodes*sizeof(double));175 for(i=0;i< model->numberofnodes;i++)dpart[i]=part[i];172 MeshPartitionx(&epart, &part,iomodel->numberofelements,iomodel->numberofnodes,iomodel->elements, iomodel->numberofelements2d,iomodel->numberofnodes2d,iomodel->elements2d,iomodel->numlayers,elements_width, iomodel->meshtype,iomodel->qmu_npart); 173 174 dpart=(double*)xmalloc(iomodel->numberofnodes*sizeof(double)); 175 for(i=0;i<iomodel->numberofnodes;i++)dpart[i]=part[i]; 176 176 } 177 177 178 178 count++; 179 179 param= new Param(count,"qmu_part",DOUBLEVEC); 180 param->SetDoubleVec(dpart, model->numberofnodes,1);180 param->SetDoubleVec(dpart,iomodel->numberofnodes,1); 181 181 parameters->AddObject(param); 182 182 183 183 /*Ok, now if any of the variables input from Dakota are distributed, we are going to need the parameters: */ 184 for(i=0;i< model->numberofvariables;i++){184 for(i=0;i<iomodel->numberofvariables;i++){ 185 185 186 186 descriptor=variabledescriptors[i]; … … 191 191 192 192 //Fetch data: 193 ModelFetchData((void**)&dakota_parameter,NULL,NULL,model_handle,descriptor,"Matrix","Mat");193 IoModelFetchData((void**)&dakota_parameter,NULL,NULL,iomodel_handle,descriptor,"Matrix","Mat"); 194 194 195 195 //Add parameter 196 196 count++; 197 197 param= new Param(count,descriptor,DOUBLEVEC); 198 param->SetDoubleVec(dakota_parameter, model->numberofnodes,1);198 param->SetDoubleVec(dakota_parameter,iomodel->numberofnodes,1); 199 199 parameters->AddObject(param); 200 200 … … 207 207 /*Free data: */ 208 208 xfree((void**)&tag); 209 for(i=0;i< model->numberofresponses;i++){209 for(i=0;i<iomodel->numberofresponses;i++){ 210 210 char* descriptor=responsedescriptors[i]; 211 211 xfree((void**)&descriptor); … … 213 213 xfree((void**)&responsedescriptors); 214 214 215 for(i=0;i< model->numberofvariables;i++){215 for(i=0;i<iomodel->numberofvariables;i++){ 216 216 char* descriptor=variabledescriptors[i]; 217 217 xfree((void**)&descriptor); … … 219 219 xfree((void**)&variabledescriptors); 220 220 221 xfree((void**)& model->elements);222 xfree((void**)& model->elements2d);221 xfree((void**)&iomodel->elements); 222 xfree((void**)&iomodel->elements2d); 223 223 xfree((void**)&epart); 224 224 xfree((void**)&part);
Note:
See TracChangeset
for help on using the changeset viewer.