Changeset 816


Ignore:
Timestamp:
06/05/09 12:29:15 (16 years ago)
Author:
Eric.Larour
Message:

New UpdateGeometry module. Added gridonicesheet and gridoniceshelf to Node

Location:
issm/trunk/src
Files:
6 added
1 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/Makefile.am

    r768 r816  
    222222                                        ./UpdateFromInputsx/UpdateFromInputsx.h\
    223223                                        ./UpdateFromInputsx/UpdateFromInputsx.cpp\
     224                                        ./UpdateGeometryx/UpdateGeometryx.h\
     225                                        ./UpdateGeometryx/UpdateGeometryx.cpp\
    224226                                        ./ConfigureObjectsx/ConfigureObjectsx.h\
    225227                                        ./ConfigureObjectsx/ConfigureObjectsx.cpp\
     
    492494                                        ./UpdateFromInputsx/UpdateFromInputsx.h\
    493495                                        ./UpdateFromInputsx/UpdateFromInputsx.cpp\
     496                                        ./UpdateGeometryx/UpdateGeometryx.h\
     497                                        ./UpdateGeometryx/UpdateGeometryx.cpp\
    494498                                        ./ConfigureObjectsx/ConfigureObjectsx.h\
    495499                                        ./ConfigureObjectsx/ConfigureObjectsx.cpp\
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHoriz/CreateElementsNodesAndMaterialsDiagnosticHoriz.cpp

    r786 r816  
    122122        int node_onbed;
    123123        int node_onsurface;
     124        int node_onsheet;
     125        int node_onshelf;
    124126        int node_upper_node_id;
    125127        int node_numdofs;
     
    579581        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
    580582        ModelFetchData((void**)&model->gridonhutter,NULL,NULL,model_handle,"gridonhutter","Matrix","Mat");
     583        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     584        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    581585
    582586        /*Get number of dofs per node: */
     
    612616                node_onbed=(int)model->gridonbed[i];
    613617                node_onsurface=(int)model->gridonsurface[i];   
     618                node_onshelf=(int)model->gridoniceshelf[i];     
     619                node_onsheet=(int)model->gridonicesheet[i];     
     620
    614621                if (strcmp(model->meshtype,"3d")==0){
    615622                        if (isnan(model->uppernodes[i])){
     
    626633
    627634                /*Create node using its constructor: */
    628                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     635                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    629636
    630637                /*set single point constraints.: */
     
    665672        xfree((void**)&model->gridonhutter);
    666673        xfree((void**)&model->uppernodes);
    667                
     674        xfree((void**)&model->gridonicesheet);
     675        xfree((void**)&model->gridoniceshelf);
     676       
    668677
    669678        /*Keep partitioning information into model*/
  • issm/trunk/src/c/ModelProcessorx/DiagnosticHutter/CreateElementsNodesAndMaterialsDiagnosticHutter.cpp

    r748 r816  
    9494        int node_onbed;
    9595        int node_onsurface;
     96        int node_onshelf;
     97        int node_onsheet;
    9698        int node_upper_node_id;
    9799        int node_numdofs;
     
    364366        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
    365367        ModelFetchData((void**)&model->gridonhutter,NULL,NULL,model_handle,"gridonhutter","Matrix","Mat");
     368        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     369        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    366370
    367371       
     
    397401                node_onbed=(int)model->gridonbed[i];
    398402                node_onsurface=(int)model->gridonsurface[i];   
     403                node_onshelf=(int)model->gridoniceshelf[i];     
     404                node_onsheet=(int)model->gridonicesheet[i];     
     405
    399406                if (strcmp(model->meshtype,"3d")==0){
    400407                        if (isnan(model->uppernodes[i])){
     
    411418
    412419                /*Create node using its constructor: */
    413                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     420                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    414421
    415422                /*set single point constraints.: */
     
    443450        xfree((void**)&model->gridonhutter);
    444451        xfree((void**)&model->uppernodes);
    445                
     452        xfree((void**)&model->gridonicesheet);
     453        xfree((void**)&model->gridoniceshelf);
     454       
    446455
    447456        /*Keep partitioning information into model*/
  • issm/trunk/src/c/ModelProcessorx/DiagnosticStokes/CreateElementsNodesAndMaterialsDiagnosticStokes.cpp

    r586 r816  
    102102        int node_onbed;
    103103        int node_onsurface;
     104        int node_onshelf;
     105        int node_onsheet;
    104106        int node_upper_node_id;
    105107        int node_numdofs;
     
    461463                node_onbed=(int)model->gridonbed[i];
    462464                node_onsurface=(int)model->gridonsurface[i];   
     465                node_onshelf=(int)model->gridoniceshelf[i];     
     466                node_onsheet=(int)model->gridonicesheet[i];     
     467
    463468                if (strcmp(model->meshtype,"3d")==0){
    464469                        if (isnan(model->uppernodes[i])){
     
    475480
    476481                /*Create node using its constructor: */
    477                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     482                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    478483
    479484                /*set single point constraints.: */
     
    516521        xfree((void**)&model->gridonstokes);
    517522        xfree((void**)&model->borderstokes);
     523        xfree((void**)&model->gridonicesheet);
     524        xfree((void**)&model->gridoniceshelf);
    518525
    519526
  • issm/trunk/src/c/ModelProcessorx/DiagnosticVert/CreateElementsNodesAndMaterialsDiagnosticVert.cpp

    r586 r816  
    101101        int node_onbed;
    102102        int node_onsurface;
     103        int node_onshelf;
     104        int node_onsheet;
    103105        int node_upper_node_id;
    104106        int node_numdofs;
     
    347349        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    348350        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     351        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     352        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    349353
    350354       
     
    380384               
    381385                node_onbed=(int)model->gridonbed[i];
    382                 node_onsurface=(int)model->gridonsurface[i];   
     386                node_onsurface=(int)model->gridonsurface[i];
     387                node_onshelf=(int)model->gridoniceshelf[i];     
     388                node_onsheet=(int)model->gridonicesheet[i];     
     389       
    383390                if (isnan(model->uppernodes[i])){
    384391                        node_upper_node_id=node_id;  //nodes on surface do not have upper nodes, only themselves.
     
    389396
    390397                /*Create node using its constructor: */
    391                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     398                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    392399
    393400                /*Add node to nodes dataset: */
     
    413420        xfree((void**)&model->gridonsurface);
    414421        xfree((void**)&model->uppernodes);
    415                
     422        xfree((void**)&model->gridonicesheet);
     423        xfree((void**)&model->gridoniceshelf);
     424       
    416425
    417426        /*Keep partitioning information into model*/
  • issm/trunk/src/c/ModelProcessorx/Melting/CreateElementsNodesAndMaterialsMelting.cpp

    r721 r816  
    101101        int node_onbed;
    102102        int node_onsurface;
     103        int node_onshelf;
     104        int node_onsheet;
    103105        int node_upper_node_id;
    104106        int node_numdofs;
     
    392394        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    393395        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     396        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     397        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    394398
    395399
     
    426430                node_onbed=(int)model->gridonbed[i];
    427431                node_onsurface=(int)model->gridonsurface[i];   
     432                node_onshelf=(int)model->gridoniceshelf[i];     
     433                node_onsheet=(int)model->gridonicesheet[i];     
     434
    428435                if (strcmp(model->meshtype,"3d")==0){
    429436                        if (isnan(model->uppernodes[i])){
     
    440447
    441448                /*Create node using its constructor: */
    442                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     449                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    443450
    444451                /*set single point constraints.: */
     
    470477        xfree((void**)&model->gridonsurface);
    471478        xfree((void**)&model->uppernodes);
     479        xfree((void**)&model->gridonicesheet);
     480        xfree((void**)&model->gridoniceshelf);
    472481
    473482        /*Keep partitioning information into model*/
  • issm/trunk/src/c/ModelProcessorx/Model.cpp

    r765 r816  
    7676        model->elementoniceshelf=NULL;
    7777        model->gridonicesheet=NULL;
     78        model->gridoniceshelf=NULL;
    7879
    7980        model->drag_type=0;
     
    236237        xfree((void**)&model->elementoniceshelf);
    237238        xfree((void**)&model->gridonicesheet);
     239        xfree((void**)&model->gridoniceshelf);
    238240        xfree((void**)&model->segmentonneumann_diag);
    239241        xfree((void**)&model->segmentonneumann_diag_stokes);
  • issm/trunk/src/c/ModelProcessorx/Model.h

    r765 r816  
    7373        double* elementoniceshelf;
    7474        double* gridonicesheet;
     75        double* gridoniceshelf;
    7576
    7677        /*friction: */
  • issm/trunk/src/c/ModelProcessorx/Prognostic/CreateElementsNodesAndMaterialsPrognostic.cpp

    r586 r816  
    123123        int node_onbed;
    124124        int node_onsurface;
     125        int node_onshelf;
     126        int node_onsheet;
    125127        int node_upper_node_id;
    126128        int node_numdofs;
     
    442444        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    443445        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     446        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     447        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    444448
    445449
     
    476480                node_onbed=(int)model->gridonbed[i];
    477481                node_onsurface=(int)model->gridonsurface[i];   
     482                node_onshelf=(int)model->gridoniceshelf[i];     
     483                node_onsheet=(int)model->gridonicesheet[i];     
     484
    478485                if (strcmp(model->meshtype,"3d")==0){
    479486                        if (isnan(model->uppernodes[i])){
     
    490497
    491498                /*Create node using its constructor: */
    492                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     499                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    493500
    494501                /*set single point constraints.: */
     
    523530        xfree((void**)&model->gridonsurface);
    524531        xfree((void**)&model->uppernodes);
    525                
     532        xfree((void**)&model->gridonicesheet);
     533        xfree((void**)&model->gridoniceshelf);
     534       
    526535
    527536        /*Keep partitioning information into model*/
  • issm/trunk/src/c/ModelProcessorx/SlopeCompute/CreateElementsNodesAndMaterialsSlopeCompute.cpp

    r586 r816  
    101101        int node_onbed;
    102102        int node_onsurface;
     103        int node_onshelf;
     104        int node_onsheet;
    103105        int node_upper_node_id;
    104106        int node_numdofs;
     
    398400        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    399401        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     402        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     403        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    400404
    401405
     
    432436                node_onbed=(int)model->gridonbed[i];
    433437                node_onsurface=(int)model->gridonsurface[i];   
     438                node_onshelf=(int)model->gridoniceshelf[i];     
     439                node_onsheet=(int)model->gridonicesheet[i];     
     440
    434441                if (strcmp(model->meshtype,"3d")==0){
    435442                        if (isnan(model->uppernodes[i])){
     
    446453
    447454                /*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);
     455                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    449456
    450457                /*set single point constraints.: */
     
    479486        xfree((void**)&model->gridonsurface);
    480487        xfree((void**)&model->uppernodes);
    481                
     488        xfree((void**)&model->gridonicesheet);
     489        xfree((void**)&model->gridoniceshelf);
     490       
    482491
    483492        /*Keep partitioning information into model*/
  • issm/trunk/src/c/ModelProcessorx/Thermal/CreateElementsNodesAndMaterialsThermal.cpp

    r721 r816  
    102102        int node_onbed;
    103103        int node_onsurface;
     104        int node_onshelf;
     105        int node_onsheet;
    104106        int node_upper_node_id;
    105107        int node_numdofs;
     
    387389        ModelFetchData((void**)&model->gridonbed,NULL,NULL,model_handle,"gridonbed","Matrix","Mat");
    388390        ModelFetchData((void**)&model->gridonsurface,NULL,NULL,model_handle,"gridonsurface","Matrix","Mat");
     391        ModelFetchData((void**)&model->gridonicesheet,NULL,NULL,model_handle,"gridonicesheet","Matrix","Mat");
     392        ModelFetchData((void**)&model->gridoniceshelf,NULL,NULL,model_handle,"gridoniceshelf","Matrix","Mat");
    389393
    390394        /*Get number of dofs per node: */
     
    416420                node_onbed=(int)model->gridonbed[i];
    417421                node_onsurface=(int)model->gridonsurface[i];   
     422                node_onshelf=(int)model->gridoniceshelf[i];     
     423                node_onsheet=(int)model->gridonicesheet[i];     
     424
    418425                if (strcmp(model->meshtype,"3d")==0){
    419426                        if (isnan(model->uppernodes[i])){
     
    430437
    431438                /*Create node using its constructor: */
    432                 node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id);
     439                node=new Node(node_id,node_partitionborder,node_numdofs,node_x,node_onbed,node_onsurface,node_upper_node_id,node_onshelf,node_onsheet);
    433440
    434441                /*Add node to nodes dataset: */
     
    454461        xfree((void**)&model->gridonsurface);
    455462        xfree((void**)&model->uppernodes);
    456                
     463        xfree((void**)&model->gridonicesheet);
     464        xfree((void**)&model->gridoniceshelf);
     465       
    457466        cleanup_and_return:
    458467
  • issm/trunk/src/c/issm.h

    r586 r816  
    3333#include "./SystemMatricesx/SystemMatricesx.h"
    3434#include "./UpdateFromInputsx/UpdateFromInputsx.h"
     35#include "./UpdateGeometryx/UpdateGeometryx.h"
    3536#include "./PenaltySystemMatricesx/PenaltySystemMatricesx.h"
    3637#include "./Reducematrixfromgtofx/Reducematrixfromgtofx.h"
  • issm/trunk/src/c/objects/Node.cpp

    r803 r816  
    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){
     23Node::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){
    2424
    2525        int i;
     
    3333        onbed=node_onbed;
    3434        onsurface=node_onsurface;
     35        onshelf=node_onshelf;
     36        onsheet=node_onsheet;
    3537
    3638        /*Initialize sets: */
     
    6668        printf("   onbed: %i\n",onbed);
    6769        printf("   onsurface: %i\n",onsurface);
     70        printf("   onshelf: %i\n",onshelf);
     71        printf("   onsheet: %i\n",onsheet);
    6872        printf("   upper_node_id=%i\n",upper_node_id);
    6973        printf("   upper_node_offset=%i\n",upper_node_offset);
     
    100104        printf("   onbed: %i\n",onbed);
    101105        printf("   onsurface: %i\n",onsurface);
     106        printf("   onshelf: %i\n",onshelf);
     107        printf("   onsheet: %i\n",onsheet);
    102108        printf("   upper_node_id=%i\n",upper_node_id);
    103109        printf("   upper_node_offset=%i\n",upper_node_offset);
     
    143149        memcpy(marshalled_dataset,&onbed,sizeof(onbed));marshalled_dataset+=sizeof(onbed);
    144150        memcpy(marshalled_dataset,&onsurface,sizeof(onsurface));marshalled_dataset+=sizeof(onsurface);
     151        memcpy(marshalled_dataset,&onshelf,sizeof(onshelf));marshalled_dataset+=sizeof(onshelf);
     152        memcpy(marshalled_dataset,&onsheet,sizeof(onsheet));marshalled_dataset+=sizeof(onsheet);
    145153        memcpy(marshalled_dataset,&doflist,sizeof(doflist));marshalled_dataset+=sizeof(doflist);
    146154        memcpy(marshalled_dataset,&doflist1,sizeof(doflist1));marshalled_dataset+=sizeof(doflist1);
     
    166174                sizeof(onbed)+
    167175                sizeof(onsurface)+
     176                sizeof(onshelf)+
     177                sizeof(onsheet)+
    168178                sizeof(doflist)+
    169179                sizeof(doflist1)+
     
    200210        memcpy(&onbed,marshalled_dataset,sizeof(onbed));marshalled_dataset+=sizeof(onbed);
    201211        memcpy(&onsurface,marshalled_dataset,sizeof(onsurface));marshalled_dataset+=sizeof(onsurface);
     212        memcpy(&onshelf,marshalled_dataset,sizeof(onshelf));marshalled_dataset+=sizeof(onshelf);
     213        memcpy(&onsheet,marshalled_dataset,sizeof(onsheet));marshalled_dataset+=sizeof(onsheet);
    202214        memcpy(&doflist,marshalled_dataset,sizeof(doflist));marshalled_dataset+=sizeof(doflist);
    203215        memcpy(&doflist1,marshalled_dataset,sizeof(doflist1));marshalled_dataset+=sizeof(doflist1);
     
    517529        return onsurface;
    518530}
    519                
     531
     532int   Node::IsOnShelf(){
     533        return onshelf;
     534}
     535
     536int   Node::IsOnSheet(){
     537        return onsheet;
     538}               
    520539void  Node::FreezeDof(int dof){
    521540       
  • issm/trunk/src/c/objects/Node.h

    r803 r816  
    2323                int         onbed; /*! for 3d, on bedrock*/
    2424                int         onsurface; /*! for 3d, on surface*/
     25                int         onshelf;
     26                int         onsheet;
    2527
    2628                /*for dof constraining: */
     
    4143
    4244                Node();
    43                 Node(int node_id,int node_partitionborder,int node_numdofs, double node_x[3],int node_onbed,int node_onsurface,int upper_node_id);
     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);
    4446                ~Node();
    4547
     
    7981                void  FreezeDof(int dof);
    8082                void  VelocityDepthAverageAtBase(Vec ug,double* ug_serial);
    81 
     83                int   IsOnShelf();
     84                int   IsOnSheet();
    8285};
    8386
  • issm/trunk/src/m/classes/public/marshall.m

    r804 r816  
    7474WriteData(fid,md.elementoniceshelf,'Mat','elementoniceshelf');
    7575WriteData(fid,md.gridonicesheet,'Mat','gridonicesheet');
     76WriteData(fid,md.gridoniceshelf,'Mat','gridoniceshelf');
    7677
    7778WriteData(fid,md.segmentonneumann_diag,'Mat','segmentonneumann_diag');
  • issm/trunk/src/m/solutions/cielo/transient2d.m

    r784 r816  
    7878        %update surface and bed using the new thickness
    7979        disp(sprintf('%s','   updating geometry...'));
    80         [new_bed,new_surface,new_thickness]=UpdateGeometry(md,new_thickness,solution(n).b_g,solution(n).s_g);
     80        [new_thickness,new_bed,new_surface]=UpdateGeometry(m_p.elements,m_p.nodes,m_p.loads,m_p.materials,m_p.parameters,new_thickness,solution(n).b_g,solution(n).s_g);
    8181
    8282        %Record bed surface and thickness in the solution
     
    9595        time=time+dt;
    9696        n=n+1;
    97 
    9897end
    9998
  • issm/trunk/src/mex/Makefile.am

    r586 r816  
    4343                                TriMeshRefine\
    4444                                UpdateFromInputs\
     45                                UpdateGeometry\
    4546                                VelocityExtrude\
    4647                                VelocityDepthAverage
     
    184185                          UpdateFromInputs/UpdateFromInputs.h
    185186
     187UpdateGeometry_SOURCES = UpdateGeometry/UpdateGeometry.cpp\
     188                          UpdateGeometry/UpdateGeometry.h
     189
    186190VelocityExtrude_SOURCES = VelocityExtrude/VelocityExtrude.cpp\
    187191                          VelocityExtrude/VelocityExtrude.h
Note: See TracChangeset for help on using the changeset viewer.