Changeset 1836


Ignore:
Timestamp:
08/24/09 17:54:44 (16 years ago)
Author:
Eric.Larour
Message:

Brachning back from issm.controlstatic, by hand

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/Qmu/CreateParametersQmu.cpp

    r1104 r1836  
    1313#include "../../include/macros.h"
    1414#include "../../MeshPartitionx/MeshPartitionx.h"
    15 #include "../Model.h"
    16 
    17 void CreateParametersQmu(DataSet** pparameters,Model* model,ConstDataHandle model_handle){
     15#include "../IoModel.h"
     16
     17void CreateParametersQmu(DataSet** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
    1818       
    1919        int i;
     
    5252        count++;
    5353        param= new Param(count,"qmu_analysis",INTEGER);
    54         param->SetInteger(model->qmu_analysis);
     54        param->SetInteger(iomodel->qmu_analysis);
    5555        parameters->AddObject(param);
    5656
    5757
    58         if(model->qmu_analysis){
     58        if(iomodel->qmu_analysis){
    5959                //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");
    6262               
    6363                count++;
     
    6666                parameters->AddObject(param);
    6767
    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");
    7070               
    7171                count++;
     
    7474                parameters->AddObject(param);
    7575
    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");
    7878               
    7979                count++;
     
    8585                count++;
    8686                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*));
    9292
    9393                /*Fetch descriptors: logic varies if we are running parallel or serial. In parallel, qmumarshall
     
    9696
    9797                #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++){
    100100                        pfield2=mxGetCell(pfield,i);
    101101                        FetchData((void**)&descriptor,NULL,NULL,pfield2,"String",NULL);
     
    104104                #else
    105105                tag=(char*)xmalloc((strlen("variabledescriptori")+1)*sizeof(char));
    106                 for(i=0;i<model->numberofvariables;i++){
     106                for(i=0;i<iomodel->numberofvariables;i++){
    107107                        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);
    109109                        variabledescriptors[i]=descriptor;
    110110                }
     
    114114                count++;
    115115                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*));
    122122
    123123                /*Fetch descriptors: */
    124124                #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++){
    127127                        pfield2=mxGetCell(pfield,i);
    128128                        FetchData((void**)&descriptor,NULL,NULL,pfield2,"String",NULL);
     
    133133                tag=(char*)xmalloc((strlen("responsedescriptori")+1)*sizeof(char));
    134134
    135                 for(i=0;i<model->numberofresponses;i++){
     135                for(i=0;i<iomodel->numberofresponses;i++){
    136136                        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);
    138138                        responsedescriptors[i]=descriptor;
    139139                }
     
    143143                count++;
    144144                param= new Param(count,"responsedescriptors",STRINGARRAY);
    145                 param->SetStringArray(responsedescriptors,model->numberofresponses);
     145                param->SetStringArray(responsedescriptors,iomodel->numberofresponses);
    146146                parameters->AddObject(param);
    147147
    148148                #ifdef _DEBUG_
    149                         for(i=0;i<model->numberofvariables;i++){
     149                        for(i=0;i<iomodel->numberofvariables;i++){
    150150                                _printf_("variable descriptor %s\n",variabledescriptors[i]);
    151151                        }
    152152                       
    153                         for(i=0;i<model->numberofresponses;i++){
     153                        for(i=0;i<iomodel->numberofresponses;i++){
    154154                                _printf_("response descriptor %s\n",responsedescriptors[i]);
    155155                        }
    156156                #endif
    157157
    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");
    160160
    161161                if(!dpart){
    162162
    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");
    165165                                elements_width=3; //tria elements
    166166                        }
    167167                        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");
    169169                                elements_width=6; //penta elements
    170170                        }
    171171
    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];
    176176                }
    177177
    178178                count++;
    179179                param= new Param(count,"qmu_part",DOUBLEVEC);
    180                 param->SetDoubleVec(dpart,model->numberofnodes,1);
     180                param->SetDoubleVec(dpart,iomodel->numberofnodes,1);
    181181                parameters->AddObject(param);
    182182
    183183                /*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++){
    185185
    186186                        descriptor=variabledescriptors[i];
     
    191191
    192192                                //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");
    194194
    195195                                //Add parameter
    196196                                count++;
    197197                                param= new Param(count,descriptor,DOUBLEVEC);
    198                                 param->SetDoubleVec(dakota_parameter,model->numberofnodes,1);
     198                                param->SetDoubleVec(dakota_parameter,iomodel->numberofnodes,1);
    199199                                parameters->AddObject(param);
    200200
     
    207207                /*Free data: */
    208208                xfree((void**)&tag);
    209                 for(i=0;i<model->numberofresponses;i++){
     209                for(i=0;i<iomodel->numberofresponses;i++){
    210210                        char* descriptor=responsedescriptors[i];
    211211                        xfree((void**)&descriptor);
     
    213213                xfree((void**)&responsedescriptors);
    214214
    215                 for(i=0;i<model->numberofvariables;i++){
     215                for(i=0;i<iomodel->numberofvariables;i++){
    216216                        char* descriptor=variabledescriptors[i];
    217217                        xfree((void**)&descriptor);
     
    219219                xfree((void**)&variabledescriptors);
    220220
    221                 xfree((void**)&model->elements);
    222                 xfree((void**)&model->elements2d);
     221                xfree((void**)&iomodel->elements);
     222                xfree((void**)&iomodel->elements2d);
    223223                xfree((void**)&epart);
    224224                xfree((void**)&part);
Note: See TracChangeset for help on using the changeset viewer.