Changeset 95


Ignore:
Timestamp:
04/28/09 15:19:42 (16 years ago)
Author:
Eric.Larour
Message:

New upper node for velocity extrude capability

Location:
issm/trunk/src/c/objects
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/Node.cpp

    r8 r95  
    1616#include "./ParameterInputs.h"
    1717#include "../shared/shared.h"
    18 
    19                
     18#include "../include/typedefs.h"
     19
    2020Node::Node(){
    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){
     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){
    2424
    2525        int i;
     
    4242        }
    4343
     44        /*Initialize upper node:*/
     45        upper_node_id=node_upper_node_id;
     46        upper_node=NULL;
     47        upper_node_offset=UNDEF;
     48
    4449        return;
    4550}
     
    6166        printf("   onbed: %i\n",onbed);
    6267        printf("   onsurface: %i\n",onsurface);
     68        printf("   upper_node_id=%i\n",upper_node_id);
     69        printf("   upper_node_offset=%i\n",upper_node_offset);
    6370        printf("   doflist:|");
    6471        for(i=0;i<numberofdofs;i++){
     
    7481        }
    7582        printf("\n");
     83        if(upper_node)printf("   upper_node pointer: %p\n",upper_node);
    7684
    7785        return;
     
    105113        memcpy(marshalled_dataset,&fset,sizeof(fset));marshalled_dataset+=sizeof(fset);
    106114        memcpy(marshalled_dataset,&sset,sizeof(sset));marshalled_dataset+=sizeof(sset);
     115        memcpy(marshalled_dataset,&upper_node_id,sizeof(upper_node_id));marshalled_dataset+=sizeof(upper_node_id);
     116        memcpy(marshalled_dataset,&upper_node,sizeof(upper_node));marshalled_dataset+=sizeof(upper_node);
     117        memcpy(marshalled_dataset,&upper_node_offset,sizeof(upper_node_offset));marshalled_dataset+=sizeof(upper_node_offset);
    107118
    108119        *pmarshalled_dataset=marshalled_dataset;
     
    124135                sizeof(fset)+
    125136                sizeof(sset)+
     137                sizeof(upper_node_id)+
     138                sizeof(upper_node)+
     139                sizeof(upper_node_offset)+
    126140                sizeof(int); //sizeof(int) for enum type
    127141}
     
    154168        memcpy(&fset,marshalled_dataset,sizeof(fset));marshalled_dataset+=sizeof(fset);
    155169        memcpy(&sset,marshalled_dataset,sizeof(sset));marshalled_dataset+=sizeof(sset);
     170        memcpy(&upper_node_id,marshalled_dataset,sizeof(upper_node_id));marshalled_dataset+=sizeof(upper_node_id);
     171        memcpy(&upper_node,marshalled_dataset,sizeof(upper_node));marshalled_dataset+=sizeof(upper_node);
     172        memcpy(&upper_node_offset,marshalled_dataset,sizeof(upper_node_offset));marshalled_dataset+=sizeof(upper_node_offset);
     173       
     174        /*upper node is not pointing to correct object anymore: */
     175        upper_node=NULL;
    156176
    157177        /*return: */
     
    417437
    418438}
     439
     440#undef __FUNCT__
     441#define __FUNCT__ "Node::Configure"
     442void  Node::Configure(void* pnodes){
     443
     444        DataSet* nodes=NULL;
     445
     446        /*Recover pointers :*/
     447        nodes=(DataSet*)pnodes;
     448
     449        /*Link this node with its upper node: */
     450        ResolvePointers((Object**)&upper_node,&upper_node_id,&upper_node_offset,1,nodes);
     451       
     452}
     453
     454#undef __FUNCT__
     455#define __FUNCT__ "Node::GetUpperNode"
     456Node* Node::GetUpperNode(){
     457        return upper_node;
     458}
     459               
     460int   Node::IsOnBed(){
     461        return onbed;
     462}
     463
     464int   Node::IsOnSurface(){
     465        return onsurface;
     466}
     467               
     468void  Node::FreezeDof(int dof){
     469       
     470        DofInSSet(dof-1); //with 0 displacement for this dof.
     471
     472}
  • issm/trunk/src/c/objects/Node.h

    r8 r95  
    3131                int     sset[MAXDOFSPERNODE];
    3232
     33                int   upper_node_id;
     34                Node* upper_node;
     35                int   upper_node_offset;
     36
    3337                /*data that is post processed : */
    3438                int doflist[MAXDOFSPERNODE];
     
    3741
    3842                Node();
    39                 Node(int node_id,int node_partitionborder,int node_numdofs, double node_x[3],int node_onbed,int node_onsurface);
     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);
    4044                ~Node();
    4145
     
    6872                Object* copy();
    6973                void  UpdateFromInputs(ParameterInputs* inputs);
     74                void  Configure(void* pnodes);
     75                Node* GetUpperNode();
     76                int   IsOnBed();
     77                int   IsOnSurface();
     78                void  FreezeDof(int dof);
    7079
    7180};
Note: See TracChangeset for help on using the changeset viewer.