00001 #ifndef ENDNODE_H 00002 #define ENDNODE_H 00003 00004 #include <stdio.h> 00005 #include "gnode.h" 00006 #include "vector.h" 00007 00008 /** 00009 class endnode 00010 00011 this class defines end nodes, which can be 00012 used in connection with general finite elements 00013 only topological informations are collected 00014 00015 the class is motivated by solution of hemivariational 00016 inequalities, 00017 in 1D problems, there is a contact between two parts of a body 00018 matching mesh is assumed and therefore two elements share 00019 one end node, the end node has to know two nodes because it will work 00020 with differences of displacements 00021 00022 example: 00023 00024 BODY 1 ---3----4 7----8----12---- BODY 2 00025 3 00026 end node 4 from the body 1 and end node 7 from body 2 are identical, 00027 they are stored in one end node which has to know nodes 4, 7 00028 node in body 1 is ordered first, node in body 2 is ordered after 00029 ordering of body 1 00030 number of nodes collected in end node is 2 00031 00032 JK, 12.10.2008 00033 */ 00034 00035 class endnode 00036 { 00037 public: 00038 00039 endnode (); 00040 ~endnode (); 00041 00042 void print (FILE *out); 00043 00044 void alloc_cnm (long nccn); 00045 00046 void give_node_numbers (long *nid); 00047 void give_mult_code_numbers (long *mcn); 00048 00049 00050 /// number of nodes in end point 00051 long nn; 00052 /// first node (number of first node) 00053 long fn; 00054 /// last node (number of last node) 00055 long ln; 00056 /// number of DOFs defined on first nodes 00057 long ndofn; 00058 00059 /// number of reference element 00060 long re; 00061 /// numbers of adjacent elements 00062 long *adjel; 00063 00064 /// node multiplicity 00065 long nm; 00066 /// array of code numbers for Lagrange multipliers 00067 long *cnm; 00068 00069 /// threshold 00070 double threshold; 00071 00072 }; 00073 00074 #endif