Changeset 3811


Ignore:
Timestamp:
05/18/10 12:19:45 (15 years ago)
Author:
Eric.Larour
Message:

Added upper and lower elements neighboors in Penta element

Location:
issm/trunk/src
Files:
26 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/DataSet/DataSet.cpp

    r3802 r3811  
    680680
    681681                        element=(Element*)(*object);
    682                         element->Configure(loads,nodes,materials,parameters);
     682                        element->Configure(elements,loads,nodes,materials,parameters);
    683683                }
    684684                if(EnumIsLoad((*object)->Enum())){
  • issm/trunk/src/c/ModelProcessorx/Balancedthickness/CreateElementsNodesAndMaterialsBalancedthickness.cpp

    r3775 r3811  
    9191                IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
    9292                IoModelFetchData(&iomodel->dhdt,NULL,NULL,iomodel_handle,"dhdt");
     93                IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     94                IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    9395       
    9496                for (i=0;i<iomodel->numberofelements;i++){
     
    116118                xfree((void**)&iomodel->accumulation_rate);
    117119                xfree((void**)&iomodel->dhdt);
     120                xfree((void**)&iomodel->upperelements);
     121                xfree((void**)&iomodel->lowerelements);
     122
    118123
    119124        } //if (strcmp(meshtype,"2d")==0)
  • issm/trunk/src/c/ModelProcessorx/Balancedvelocities/CreateElementsNodesAndMaterialsBalancedvelocities.cpp

    r3775 r3811  
    9090                IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
    9191                IoModelFetchData(&iomodel->accumulation_rate,NULL,NULL,iomodel_handle,"accumulation_rate");
     92                IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     93                IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    9294
    9395                for (i=0;i<iomodel->numberofelements;i++){
     
    116118                xfree((void**)&iomodel->melting_rate);
    117119                xfree((void**)&iomodel->accumulation_rate);
     120                xfree((void**)&iomodel->upperelements);
     121                xfree((void**)&iomodel->lowerelements);
     122
    118123
    119124        } //if (strcmp(meshtype,"2d")==0)
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp

    r3775 r3811  
    122122                        IoModelFetchData(&iomodel->weights,NULL,NULL,iomodel_handle,"weights");
    123123                }
     124                IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     125                IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
     126
    124127       
    125128                for (i=0;i<iomodel->numberofelements;i++){
     
    160163                        xfree((void**)&iomodel->weights);
    161164                }
     165                xfree((void**)&iomodel->upperelements);
     166                xfree((void**)&iomodel->lowerelements);
     167
    162168
    163169
  • issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp

    r3784 r3811  
    5858        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
    5959        IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");
     60        IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     61        IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    6062       
    6163        if (iomodel->control_analysis){
     
    105107                xfree((void**)&iomodel->weights);
    106108        }
     109        xfree((void**)&iomodel->upperelements);
     110        xfree((void**)&iomodel->lowerelements);
     111
    107112
    108113        /*Add new constrant material property to materials, at the end: */
  • issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp

    r3775 r3811  
    5151        IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
    5252        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
     53        IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     54        IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    5355       
    5456        for (i=0;i<iomodel->numberofelements;i++){
     
    8082        xfree((void**)&iomodel->vx);
    8183        xfree((void**)&iomodel->vy);
     84        xfree((void**)&iomodel->upperelements);
     85        xfree((void**)&iomodel->lowerelements);
    8286
    8387        /*Add new constrant material property to materials, at the end: */
  • issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp

    r3775 r3811  
    5050        IoModelFetchData(&iomodel->melting_rate,NULL,NULL,iomodel_handle,"melting_rate");
    5151        IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
     52        IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     53        IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    5254       
    5355        for (i=0;i<iomodel->numberofelements;i++){
     
    8183        xfree((void**)&iomodel->melting_rate);
    8284        xfree((void**)&iomodel->elementonwater);
     85        xfree((void**)&iomodel->upperelements);
     86        xfree((void**)&iomodel->lowerelements);
    8387
    8488        /*Add new constrant material property tgo materials, at the end: */
  • issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp

    r3775 r3811  
    9191                IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
    9292                IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
     93                IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     94                IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    9395
    9496                for (i=0;i<iomodel->numberofelements;i++){
     
    117119                xfree((void**)&iomodel->vx);
    118120                xfree((void**)&iomodel->vy);
     121                xfree((void**)&iomodel->upperelements);
     122                xfree((void**)&iomodel->lowerelements);
     123
    119124
    120125        } //if (strcmp(meshtype,"2d")==0)
  • issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp

    r3775 r3811  
    7171                IoModelFetchData(&iomodel->elementonbed,NULL,NULL,iomodel_handle,"elementonbed");
    7272                IoModelFetchData(&iomodel->elementonwater,NULL,NULL,iomodel_handle,"elementonwater");
     73                IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     74                IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    7375       
    7476                for (i=0;i<iomodel->numberofelements;i++){
     
    8991                xfree((void**)&iomodel->elementonbed);
    9092                xfree((void**)&iomodel->elementonwater);
     93                xfree((void**)&iomodel->upperelements);
     94                xfree((void**)&iomodel->lowerelements);
    9195
    9296        } //if (strcmp(meshtype,"2d")==0)
  • issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp

    r3775 r3811  
    5353        IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
    5454        IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
     55        IoModelFetchData(&iomodel->upperelements,NULL,NULL,iomodel_handle,"upperelements");
     56        IoModelFetchData(&iomodel->lowerelements,NULL,NULL,iomodel_handle,"lowerelements");
    5557       
    5658        for (i=0;i<iomodel->numberofelements;i++){
     
    8587        xfree((void**)&iomodel->vx);
    8688        xfree((void**)&iomodel->vy);
     89        xfree((void**)&iomodel->upperelements);
     90        xfree((void**)&iomodel->lowerelements);
    8791
    8892        /*Add new constrant material property tgo materials, at the end: */
  • issm/trunk/src/c/objects/Elements/Beam.cpp

    r3784 r3811  
    164164/*Object management*/
    165165/*FUNCTION Beam::Configure{{{1*/
    166 void  Beam::Configure(DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
     166void  Beam::Configure(DataSet* elementsin,DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
    167167
    168168        int i;
  • issm/trunk/src/c/objects/Elements/Beam.h

    r3783 r3811  
    4949                int   Id();
    5050                int   MyRank();
    51                 void  Configure(DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
     51                void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
    5252                Object* copy();
    5353                void  SetClone(int* minranks);
  • issm/trunk/src/c/objects/Elements/Element.h

    r3717 r3811  
    2424               
    2525                virtual        ~Element(){};
    26                 virtual void   Configure(DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters)=0;
     26                virtual void   Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters)=0;
    2727               
    2828                virtual void   CreateKMatrix(Mat Kgg,int analysis_type,int sub_analysis_type)=0;
  • issm/trunk/src/c/objects/Elements/Penta.cpp

    r3808 r3811  
    2626        this->matice=NULL;
    2727        this->matpar=NULL;
     28        this->neighboors=NULL;
    2829       
    2930        this->inputs=NULL;
     
    4445        int penta_matice_id;
    4546        int penta_matpar_id;
     47        int penta_element_ids[2];
    4648        double nodeinputs[6];
    4749        bool collapse;
     
    5658        penta_matice_id=index+1; //refers to the corresponding ice material object
    5759        penta_matpar_id=iomodel->numberofelements+1; //refers to the constant material parameters object
     60        penta_elements_ids[0]=(int)*(iomodel->upperelements[index]);
     61        penta_elements_ids[1]=(int)*(iomodel->lowerelements[index]);
    5862
    5963        this->InitHookNodes(penta_node_ids); this->nodes=NULL;
    6064        this->InitHookMatice(penta_matice_id);this->matice=NULL;
    6165        this->InitHookMatpar(penta_matpar_id);this->matpar=NULL;
     66        this->InitHookNeighboors(penta_element_ids);this->neighboors=NULL;
    6267
    6368        //intialize inputs, and add as many inputs per element as requested:
     
    197202        penta->hmatice.copy(&this->hmatice);
    198203        penta->hmatpar.copy(&this->hmatpar);
     204        penta->hneighboors.copy(&this->hneighboors);
    199205
    200206        /*recover objects: */
     
    202208        penta->matice=(Matice*)penta->hmatice.delivers();
    203209        penta->matpar=(Matpar*)penta->hmatpar.delivers();
     210        penta->neighboors=(Penta**)penta->hneighboors.deliverp();
    204211
    205212        return penta;
     
    209216/*Object management: */
    210217/*FUNCTION Penta::Configure {{{1*/
    211 void  Penta::Configure(DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
     218void  Penta::Configure(DataSet* elementsin, DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
    212219
    213220        /*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective
     
    216223        this->hmatice.configure(materialsin);
    217224        this->hmatpar.configure(materialsin);
     225        this->hneighboors.configure(elementsin);
    218226
    219227        /*Now, go pick up the objects inside the hooks: */
     
    221229        this->matice=(Matice*)this->hmatice.delivers();
    222230        this->matpar=(Matpar*)this->hmatpar.delivers();
     231        this->neighboors=(Penta**)this->hneighboors.deliverp();
    223232
    224233        /*point parameters to real dataset: */
     
    245254        hmatice.Demarshall(&marshalled_dataset);
    246255        hmatpar.Demarshall(&marshalled_dataset);
     256        hneighboors.Demarshall(&marshalled_dataset);
    247257
    248258        /*pointers are garbabe, until configuration is carried out: */
     
    250260        matice=NULL;
    251261        matpar=NULL;
     262        neighboors=NULL;
    252263       
    253264        /*demarshall inputs: */
     
    275286        matice->DeepEcho();
    276287        matpar->DeepEcho();
     288        printf("   neigboor ids: %i-%i\n",neigboors[0]->Id(),neigboors[1]->Id());
    277289        printf("   parameters\n");
    278290        parameters->DeepEcho();
     
    320332        hmatice.Marshall(&marshalled_dataset);
    321333        hmatpar.Marshall(&marshalled_dataset);
     334        hneighboors.Marshall(&marshalled_dataset);
    322335
    323336        /*Marshall inputs: */
     
    342355                +hmatice.MarshallSize()
    343356                +hmatpar.MarshallSize()
     357                +hneighboors.MarshallSize()
    344358                +inputs->MarshallSize()
    345359                +sizeof(int); //sizeof(int) for enum type
  • issm/trunk/src/c/objects/Elements/Penta.h

    r3805 r3811  
    2727        public:
    2828
    29                 int id;
    30                
    31                 Node** nodes; // 6 nodes
    32                 Matice* matice;  // 1 material ice
    33                 Matpar* matpar;  // 1 material parameter
     29                int          id;
    3430
    35                 Parameters* parameters; //pointer to solution parameters
    36                 Inputs* inputs;
     31                Node       **nodes;        // 6 nodes
     32                Matice      *matice;       // 1 material ice
     33                Matpar      *matpar;       // 1 material parameter
     34                Penta       *neighboors;   // 2 neighboors: first one under, second one above
     35
     36                Parameters  *parameters;   //pointer to solution parameters
     37                Inputs      *inputs;
    3738
    3839                /*FUNCTION constructors, destructors {{{1*/
     
    4243                /*}}}*/
    4344                /*FUNCTION object management {{{1*/
    44                 void  Configure(DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
     45                void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
    4546                Object* copy();
    4647                void  DeepEcho();
  • issm/trunk/src/c/objects/Elements/PentaHook.cpp

    r3805 r3811  
    4545}
    4646
     47/*FUNCTION PentaHook::InitHookNeighboors(int* element_ids){{{1*/
     48void PentaHook::InitHookNeighboors(int* element_ids){
     49        this->hneighboors.Init(element_ids,2);
     50
     51}
     52/*}}}*/
  • issm/trunk/src/c/objects/Elements/PentaHook.h

    r3805 r3811  
    1414                Hook hmatice; // 1 ice material
    1515                Hook hmatpar; // 1 material parameter
     16                Hook hneighboors // 2 elements, first down, second up
    1617
    1718
     
    2223                void InitHookMatice(int matice_id);
    2324                void InitHookMatpar(int matpar_id);
     25                void InitHookNeighboors(int* element_ids);
    2426                /*}}}*/
    2527
  • issm/trunk/src/c/objects/Elements/Sing.cpp

    r3803 r3811  
    106106/*Object management*/
    107107/*FUNCTION Sing::Configure {{{1*/
    108 void  Sing::Configure(DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
     108void  Sing::Configure(DataSet* elementsin,DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
    109109
    110110        int i;
  • issm/trunk/src/c/objects/Elements/Sing.h

    r3783 r3811  
    4141                /*}}}*/
    4242                /*object management: {{{1*/
    43                 void  Configure(DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
     43                void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
    4444                Object* copy();
    4545                void  DeepEcho();
  • issm/trunk/src/c/objects/Elements/Tria.cpp

    r3808 r3811  
    211211/*Object management: */
    212212/*FUNCTION Tria::Configure {{{1*/
    213 void  Tria::Configure(DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
     213void  Tria::Configure(DataSet* elementsin, DataSet* loadsin, DataSet* nodesin, DataSet* materialsin, Parameters* parametersin){
    214214
    215215        /*Take care of hooking up all objects for this element, ie links the objects in the hooks to their respective
  • issm/trunk/src/c/objects/Elements/Tria.h

    r3808 r3811  
    4040                /*}}}*/
    4141                /*FUNCTION object management {{{1*/
    42                 void  Configure(DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
     42                void  Configure(DataSet* elements,DataSet* loads,DataSet* nodes,DataSet* materials,Parameters* parameters);
    4343                Object* copy();
    4444                void  DeepEcho();
  • issm/trunk/src/c/objects/IoModel.cpp

    r3775 r3811  
    4545                xfree((void**)&this->deadgrids);
    4646                xfree((void**)&this->uppernodes);
     47                xfree((void**)&this->upperelements);
     48                xfree((void**)&this->lowerelements);
    4749                xfree((void**)&this->gridonpattyn);
    4850        }
     
    248250        this->numlayers=0;
    249251        this->uppernodes=NULL;
     252        this->upperelements=NULL;
     253        this->lowerelements=NULL;
    250254        this->gridonhutter=NULL;
    251255        this->gridonmacayeal=NULL;
  • issm/trunk/src/c/objects/IoModel.h

    r3775 r3811  
    4242                int     numlayers;
    4343                double* uppernodes;
     44                double* upperelements;
    4445
    4546                /*elements type: */
  • issm/trunk/src/m/classes/@model/model.m

    r3612 r3811  
    8888        %Projections
    8989        md.uppergrids=NaN;
     90        md.upperelements=NaN;
     91        md.lowerelements=NaN;
    9092        md.lowergrids=NaN;
    9193        md.deadgrids=NaN;
  • issm/trunk/src/m/classes/public/extrude.m

    r3760 r3811  
    103103md.uppergrids=uppergrids;
    104104
     105%same for lower and upper elements
     106lowerelements=NaN*ones(number_el3d,1);
     107upperelements=NaN*ones(number_el3d,1);
     108lowerelements(md.numberofelements+1:end)=1:(numlayers-2)*md.numberofelements;
     109upperelements(1:(numlayers-2)*md.numberofelements)=md.numberofelements+1:(numlayers-1)*md.numberofelements;
     110md.lowerelements=lowerelements;
     111md.upperelements=upperelements;
     112
     113
     114
    105115%Save old mesh
    106116md.x2d=md.x;
  • issm/trunk/src/m/classes/public/marshall.m

    r3759 r3811  
    4444end
    4545WriteData(fid,md.uppergrids,'Mat','uppergrids');
     46WriteData(fid,md.upperelements,'Mat','upperelements');
     47WriteData(fid,md.lowerelements,'Mat','lowerelements');
    4648WriteData(fid,md.elementonbed,'Mat','elementonbed');
    4749WriteData(fid,md.elementonsurface,'Mat','elementonsurface');
Note: See TracChangeset for help on using the changeset viewer.