Changeset 1025


Ignore:
Timestamp:
06/19/09 09:49:23 (16 years ago)
Author:
Mathieu Morlighem
Message:

Use sigma to update node position

Location:
issm/trunk/src/c
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp

    r982 r1025  
    120120        int node_partitionborder=0;
    121121        double node_x[3];
     122        double node_sigma;
    122123        int node_onbed;
    123124        int node_onsurface;
     
    578579        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    579580        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     581        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     582        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    580583        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    581584        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    608611                #endif
    609612
    610 
    611613                node_x[0]=model->x[i];
    612614                node_x[1]=model->y[i];
    613615                node_x[2]=model->z[i];
    614 
     616                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    615617               
    616618                node_onbed=(int)model->gridonbed[i];
     
    633635
    634636                /*Create node using its constructor: */
    635                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     637                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    636638
    637639                /*set single point constraints.: */
     
    668670        xfree((void**)&model->y);
    669671        xfree((void**)&model->z);
     672        xfree((void**)&model->thickness);
     673        xfree((void**)&model->bed);
    670674        xfree((void**)&model->gridonbed);
    671675        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp

    r982 r1025  
    9292        int node_partitionborder=0;
    9393        double node_x[3];
     94        double node_sigma;
    9495        int node_onbed;
    9596        int node_onsurface;
     
    325326        xfree((void**)&model->thickness);
    326327        xfree((void**)&model->surface);
     328        xfree((void**)&model->bed);
    327329        xfree((void**)&model->gridonsurface);
    328330        xfree((void**)&model->uppernodes);
     
    363365        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    364366        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     367        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     368        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    365369        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    366370        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    368372        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
    369373        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    370 
    371374       
    372375        /*Get number of dofs per node: */
     
    393396                #endif
    394397
    395 
    396398                node_x[0]=model->x[i];
    397399                node_x[1]=model->y[i];
    398400                node_x[2]=model->z[i];
    399 
     401                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    400402               
    401403                node_onbed=(int)model->gridonbed[i];
     
    418420
    419421                /*Create node using its constructor: */
    420                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     422                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    421423
    422424                /*set single point constraints.: */
     
    446448        xfree((void**)&model->y);
    447449        xfree((void**)&model->z);
     450        xfree((void**)&model->thickness);
     451        xfree((void**)&model->bed);
    448452        xfree((void**)&model->gridonbed);
    449453        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp

    r982 r1025  
    100100        int node_partitionborder=0;
    101101        double node_x[3];
     102        double node_sigma;
    102103        int node_onbed;
    103104        int node_onsurface;
     
    425426        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    426427        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     428        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     429        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    427430        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    428431        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    457460                #endif
    458461
    459 
    460462                node_x[0]=model->x[i];
    461463                node_x[1]=model->y[i];
    462464                node_x[2]=model->z[i];
    463 
     465                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    464466               
    465467                node_onbed=(int)model->gridonbed[i];
     
    482484
    483485                /*Create node using its constructor: */
    484                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     486                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    485487
    486488                /*set single point constraints.: */
     
    518520        xfree((void**)&model->y);
    519521        xfree((void**)&model->z);
     522        xfree((void**)&model->thickness);
     523        xfree((void**)&model->bed);
    520524        xfree((void**)&model->gridonbed);
    521525        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp

    r982 r1025  
    9999        int node_partitionborder=0;
    100100        double node_x[3];
     101        double node_sigma;
    101102        int node_onbed;
    102103        int node_onsurface;
     
    347348        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    348349        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     350        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     351        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    349352        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    350353        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    377380                #endif
    378381
    379 
    380382                node_x[0]=model->x[i];
    381383                node_x[1]=model->y[i];
    382384                node_x[2]=model->z[i];
    383 
     385                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    384386               
    385387                node_onbed=(int)model->gridonbed[i];
     
    396398
    397399                /*Create node using its constructor: */
    398                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     400                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    399401
    400402                /*Add node to nodes dataset: */
     
    417419        xfree((void**)&model->y);
    418420        xfree((void**)&model->z);
     421        xfree((void**)&model->thickness);
     422        xfree((void**)&model->bed);
    419423        xfree((void**)&model->gridonbed);
    420424        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp

    r982 r1025  
    9999        int node_partitionborder=0;
    100100        double node_x[3];
     101        double node_sigma;
    101102        int node_onbed;
    102103        int node_onsurface;
     
    392393        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    393394        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     395        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     396        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    394397        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    395398        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    422425                #endif
    423426
    424 
    425427                node_x[0]=model->x[i];
    426428                node_x[1]=model->y[i];
    427429                node_x[2]=model->z[i];
    428 
     430                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    429431               
    430432                node_onbed=(int)model->gridonbed[i];
     
    447449
    448450                /*Create node using its constructor: */
    449                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     451                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    450452
    451453                /*set single point constraints.: */
     
    474476        xfree((void**)&model->y);
    475477        xfree((void**)&model->z);
     478        xfree((void**)&model->thickness);
     479        xfree((void**)&model->bed);
    476480        xfree((void**)&model->gridonbed);
    477481        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp

    r982 r1025  
    121121        int node_partitionborder=0;
    122122        double node_x[3];
     123        double node_sigma;
    123124        int node_onbed;
    124125        int node_onsurface;
     
    462463        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    463464        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     465        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     466        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    464467        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    465468        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    492495                #endif
    493496
    494 
    495497                node_x[0]=model->x[i];
    496498                node_x[1]=model->y[i];
    497499                node_x[2]=model->z[i];
    498 
     500                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    499501               
    500502                node_onbed=(int)model->gridonbed[i];
     
    517519
    518520                /*Create node using its constructor: */
    519                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     521                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    520522
    521523                /*set single point constraints.: */
     
    547549        xfree((void**)&model->y);
    548550        xfree((void**)&model->z);
     551        xfree((void**)&model->thickness);
     552        xfree((void**)&model->bed);
    549553        xfree((void**)&model->gridonbed);
    550554        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp

    r816 r1025  
    9999        int node_partitionborder=0;
    100100        double node_x[3];
     101        double node_sigma;
    101102        int node_onbed;
    102103        int node_onsurface;
     
    398399        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    399400        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     401        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     402        ModelFetchData((void**)&model->surface,NULL,NULL,model_handle,"surface","Matrix","Mat");
    400403        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    401404        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    428431                #endif
    429432
    430 
    431433                node_x[0]=model->x[i];
    432434                node_x[1]=model->y[i];
    433435                node_x[2]=model->z[i];
    434 
     436                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    435437               
    436438                node_onbed=(int)model->gridonbed[i];
     
    453455
    454456                /*Create node using its constructor: */
    455                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     457                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    456458
    457459                /*set single point constraints.: */
     
    483485        xfree((void**)&model->y);
    484486        xfree((void**)&model->z);
     487        xfree((void**)&model->thickness);
     488        xfree((void**)&model->bed);
    485489        xfree((void**)&model->gridonbed);
    486490        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp

    r989 r1025  
    100100        int node_partitionborder=0;
    101101        double node_x[3];
     102        double node_sigma;
    102103        int node_onbed;
    103104        int node_onsurface;
     
    396397        ModelFetchData((void**)&model->y,NULL,NULL,model_handle,"y","Matrix","Mat");
    397398        ModelFetchData((void**)&model->z,NULL,NULL,model_handle,"z","Matrix","Mat");
     399        ModelFetchData((void**)&model->thickness,NULL,NULL,model_handle,"thickness","Matrix","Mat");
     400        ModelFetchData((void**)&model->bed,NULL,NULL,model_handle,"bed","Matrix","Mat");
    398401        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    399402        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     
    426429                node_x[1]=model->y[i];
    427430                node_x[2]=model->z[i];
     431                node_sigma=(model->z[i]-model->bed[i])/(model->thickness[i]);
    428432               
    429433                node_onbed=(int)model->gridonbed[i];
     
    446450
    447451                /*Create node using its constructor: */
    448                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
     452                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_sigma,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    449453
    450454                /*Add node to nodes dataset: */
     
    467471        xfree((void**)&model->y);
    468472        xfree((void**)&model->z);
     473        xfree((void**)&model->thickness);
     474        xfree((void**)&model->bed);
    469475        xfree((void**)&model->gridonbed);
    470476        xfree((void**)&model->gridonsurface);
  • issm/trunk/src/c/objects/Node.cpp

    r984 r1025  
    2121        return;
    2222}
    23 Node::Node(int node_id,int node_partitionborder,int node_numdofs, double node_x[3],int node_onbed,int node_onsurface,int node_upper_node_id,int node_onshelf,int node_onsheet){
     23Node::Node(int node_id,int node_partitionborder,int node_numdofs, double node_x[3],double node_sigma,int node_onbed,int node_onsurface,int node_upper_node_id,int node_onshelf,int node_onsheet){
    2424
    2525        int i;
     
    3131        x[1]=node_x[1];
    3232        x[2]=node_x[2];
     33        sigma=node_sigma;
    3334        onbed=node_onbed;
    3435        onsurface=node_onsurface;
     
    6667        printf("   numberofdofs: %i\n",numberofdofs);
    6768        printf("   x=[%g,%g,%g]\n",x[0],x[1],x[2]);
     69        printf("   sigma=%g\n",sigma);
    6870        printf("   onbed: %i\n",onbed);
    6971        printf("   onsurface: %i\n",onsurface);
     
    102104        printf("   numberofdofs: %i\n",numberofdofs);
    103105        printf("   x=[%g,%g,%g]\n",x[0],x[1],x[2]);
     106        printf("   sigma=%g\n",sigma);
    104107        printf("   onbed: %i\n",onbed);
    105108        printf("   onsurface: %i\n",onsurface);
     
    147150        memcpy(marshalled_dataset,&numberofdofs,sizeof(numberofdofs));marshalled_dataset+=sizeof(numberofdofs);
    148151        memcpy(marshalled_dataset,&x,sizeof(x));marshalled_dataset+=sizeof(x);
     152        memcpy(marshalled_dataset,&sigma,sizeof(sigma));marshalled_dataset+=sizeof(sigma);
    149153        memcpy(marshalled_dataset,&onbed,sizeof(onbed));marshalled_dataset+=sizeof(onbed);
    150154        memcpy(marshalled_dataset,&onsurface,sizeof(onsurface));marshalled_dataset+=sizeof(onsurface);
     
    172176                sizeof(numberofdofs)+
    173177                sizeof(x)+
     178                sizeof(sigma)+
    174179                sizeof(onbed)+
    175180                sizeof(onsurface)+
     
    208213        memcpy(&numberofdofs,marshalled_dataset,sizeof(numberofdofs));marshalled_dataset+=sizeof(numberofdofs);
    209214        memcpy(&x,marshalled_dataset,sizeof(x));marshalled_dataset+=sizeof(x);
     215        memcpy(&sigma,marshalled_dataset,sizeof(sigma));marshalled_dataset+=sizeof(sigma);
    210216        memcpy(&onbed,marshalled_dataset,sizeof(onbed));marshalled_dataset+=sizeof(onbed);
    211217        memcpy(&onsurface,marshalled_dataset,sizeof(onsurface));marshalled_dataset+=sizeof(onsurface);
     
    484490double Node::GetY(){return x[1];}
    485491double Node::GetZ(){return x[2];}
     492double Node::GetSigma(){return sigma;}
    486493
    487494Object* Node::copy() {
     
    761768
    762769        int dof;
     770        double s;
    763771
    764772        dof=this->GetDofList1();
    765 
    766         if(onbed){
    767 
    768                 /*this node is on the bed, set its z position to the new bed: */
    769                 this->x[2]=bed[dof];
    770         }
    771         else if (onsurface){
    772 
    773                 /*this node is on the surface, set its z position to the new bed+ new thickness: */
    774                 this->x[2]=bed[dof]+thickness[dof];
    775         }
    776         else{
    777                 /*do nothing, we only update grids belonging to the exterior layers: */
    778         }
    779 }
     773        s=this->GetSigma();
     774
     775        /*sigma remains constant. z=bed+sigma*thickness*/
     776        this->x[2]=bed[dof]+s*thickness[dof];
     777
     778}
  • issm/trunk/src/c/objects/Node.h

    r848 r1025  
    2121                int     clone;  /*!this nodes is one the partition border, and is cloned*/
    2222                double  x[3]; /*! coordinates*/
     23                double  sigma; /*! sigma = (z-bed)/thickness*/
    2324                int         onbed; /*! for 3d, on bedrock*/
    2425                int         onsurface; /*! for 3d, on surface*/
     
    4344
    4445                Node();
    45                 Node(int node_id,int node_partitionborder,int node_numdofs, double node_x[3],int node_onbed,int node_onsurface,int upper_node_id,int onshelf,int onsheet);
     46                Node(int node_id,int node_partitionborder,int node_numdofs, double node_x[3],double sigma,int node_onbed,int node_onsurface,int upper_node_id,int onshelf,int onsheet);
    4647                ~Node();
    4748
     
    7475                double GetY();
    7576                double GetZ();
     77                double GetSigma();
    7678                Object* copy();
    7779                void  UpdateFromInputs(void* inputs);
Note: See TracChangeset for help on using the changeset viewer.