Changeset 14951


Ignore:
Timestamp:
05/07/13 16:19:58 (12 years ago)
Author:
Eric.Larour
Message:

CHG: de-entangle dependencies between Containers and shared/Elements

Location:
issm/trunk-jpl/src/c
Files:
9 deleted
46 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Container/Elements.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/Elements/Element.h"
     22#include "../classes/objects/ExternalResults/GenericExternalResult.h"
     23#include "../classes/Patch.h"
     24#include "../classes/toolkits/Vector.h"
    2125
    2226using namespace std;
  • issm/trunk-jpl/src/c/Container/Inputs.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/Inputs/Input.h"
    2122
    2223using namespace std;
  • issm/trunk-jpl/src/c/Container/Inputs.h

    r14915 r14951  
    33
    44/*forward declarations */
    5 class Materials;
    65class Parameters;
    7 class Elements;
    8 class Vertices;
    9 class Loads;
    10 class Nodes;
    116class DataSet;
    127class Input;
    13 class Node;
    14 class GaussTria;
    15 class GaussPenta;
    168#include "../shared/Numerics/types.h"
    179
  • issm/trunk-jpl/src/c/Container/Loads.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/Loads/Load.h"
    2122
    2223using namespace std;
  • issm/trunk-jpl/src/c/Container/Materials.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/Materials/Material.h"
    2122
    2223using namespace std;
  • issm/trunk-jpl/src/c/Container/Nodes.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/Node.h"
    2122
    2223using namespace std;
  • issm/trunk-jpl/src/c/Container/Parameters.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/objects.h"
    2122
    2223using namespace std;
  • issm/trunk-jpl/src/c/Container/Results.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/ExternalResults/ExternalResult.h"
     22#include "../classes/objects/ElementResults/ElementResult.h"
    2123
    2224using namespace std;
  • issm/trunk-jpl/src/c/Container/Vertices.cpp

    r14917 r14951  
    1919#include "../shared/shared.h"
    2020#include "../EnumDefinitions/EnumDefinitions.h"
     21#include "../classes/objects/Vertex.h"
    2122
    2223using namespace std;
  • issm/trunk-jpl/src/c/Makefile.am

    r14950 r14951  
    216216                                        ./shared/Elements/Paterson.cpp\
    217217                                        ./shared/Elements/Arrhenius.cpp\
    218                                         ./shared/Elements/GetVerticesCoordinates.cpp\
    219                                         ./shared/Elements/GetLocalDofList.cpp\
    220                                         ./shared/Elements/GetGlobalDofList.cpp\
    221                                         ./shared/Elements/GetNumberOfDofs.cpp\
    222218                                        ./shared/Elements/PrintArrays.cpp\
    223219                                        ./shared/Elements/PddSurfaceMassBalance.cpp\
     
    487483                                              ./modules/ModelProcessorx/DiagnosticHutter/CreateConstraintsDiagnosticHutter.cpp \
    488484                                              ./modules/ModelProcessorx/DiagnosticHutter/CreateLoadsDiagnosticHutter.cpp \
    489                                                   ./shared/Elements/CoordinateSystemTransform.cpp\
    490                                                   ./shared/Elements/TransformLoadVectorCoord.cpp \
    491                                                   ./shared/Elements/TransformStiffnessMatrixCoord.cpp \
    492                                                   ./shared/Elements/TransformInvStiffnessMatrixCoord.cpp \
    493                                                   ./shared/Elements/TransformSolutionCoord.cpp\
    494485                                                  ./solutions/diagnostic_core.cpp\
    495486                                                  ./solvers/solver_stokescoupling_nonlinear.cpp
  • issm/trunk-jpl/src/c/classes/objects/Elements/Element.h

    r14807 r14951  
    1111/*{{{*/
    1212#include "../Object.h"
     13#include "../../Update.h"
    1314
    1415class DataSet;
  • issm/trunk-jpl/src/c/classes/objects/Elements/PentaRef.h

    r13623 r14951  
    77#define _PENTAREF_H_
    88
     9class GaussPenta;
    910class PentaRef{
    1011
  • issm/trunk-jpl/src/c/classes/objects/Inputs/BoolInput.h

    r14917 r14951  
    1010#include "./Input.h"
    1111class GaussTria;
     12class GaussPenta;
    1213/*}}}*/
    1314
  • issm/trunk-jpl/src/c/classes/objects/Inputs/ControlInput.h

    r14917 r14951  
    1010#include "./Input.h"
    1111class GaussTria;
     12class GaussPenta;
    1213/*}}}*/
    1314
  • issm/trunk-jpl/src/c/classes/objects/Inputs/DatasetInput.h

    r14917 r14951  
    1010#include "./Input.h"
    1111class GaussTria;
     12class GaussPenta;
    1213/*}}}*/
    1314
  • issm/trunk-jpl/src/c/classes/objects/Inputs/DoubleInput.h

    r14917 r14951  
    1010#include "./Input.h"
    1111class GaussTria;
     12class GaussPenta;
    1213/*}}}*/
    1314
  • issm/trunk-jpl/src/c/classes/objects/Inputs/Input.h

    r14809 r14951  
    1313class GaussTria;
    1414class Parameters;
     15class GaussPenta;
    1516/*}}}*/
    1617
  • issm/trunk-jpl/src/c/classes/objects/Inputs/IntInput.h

    r14917 r14951  
    1010#include "./Input.h"
    1111class GaussTria;
     12class GaussPenta;
    1213/*}}}*/
    1314
  • issm/trunk-jpl/src/c/classes/objects/Inputs/PentaP1Input.h

    r14809 r14951  
    1111#include "../Elements/PentaRef.h"
    1212class GaussTria;
     13class GaussPenta;
    1314/*}}}*/
    1415
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TransientInput.h

    r14809 r14951  
    1111class GaussTria;
    1212class Parameters;
     13class GaussPenta;
    1314/*}}}*/
    1415
  • issm/trunk-jpl/src/c/classes/objects/Inputs/TriaP1Input.h

    r14809 r14951  
    1111#include "../Elements/TriaRef.h"
    1212class GaussTria;
     13class GaussPenta;
    1314/*}}}*/
    1415
  • issm/trunk-jpl/src/c/classes/objects/Loads/Friction.h

    r13623 r14951  
    1010class Inputs;
    1111class Matpar;
     12class GaussPenta;
     13class GaussTria;
    1214/*}}}*/
    1315
  • issm/trunk-jpl/src/c/classes/objects/Loads/Load.h

    r13925 r14951  
    1515
    1616#include "../Object.h"
     17#include "../../Update.h"
    1718#include "../../../toolkits/toolkits.h"
    1819#include "../../../Container/Container.h"
  • issm/trunk-jpl/src/c/classes/objects/Materials/Material.h

    r13623 r14951  
    1010class Object;
    1111#include "../Object.h"
     12#include "../../Update.h"
    1213#include "../../../toolkits/toolkits.h"
    1314/*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Node.cpp

    r14917 r14951  
    955955}
    956956/*}}}*/
     957
     958
     959/*Methods inherent to Node: */
     960int* GetLocalDofList(Node** nodes,int numnodes,int setenum,int approximation){ /*{{{*/
     961
     962        int  i,j,count,numdof,numgdof;
     963        int* ndof_list=NULL;
     964        int* ngdof_list_cumulative=NULL;
     965        int *doflist = NULL;
     966
     967        if(numnodes){
     968                /*allocate: */
     969                ndof_list=xNew<int>(numnodes);
     970                ngdof_list_cumulative=xNew<int>(numnodes);
     971
     972                /*Get number of dofs per node, and total for this given set*/
     973                numdof=0;
     974                numgdof=0;
     975                for(i=0;i<numnodes;i++){
     976
     977                        /*Cumulative list= number of dofs before node i*/
     978                        ngdof_list_cumulative[i]=numgdof;
     979
     980                        /*Number of dofs for node i for given set and for the g set*/
     981                        ndof_list[i]=nodes[i]->GetNumberOfDofs(approximation,setenum);
     982                        numgdof    +=nodes[i]->GetNumberOfDofs(approximation,GsetEnum);
     983                        numdof     +=ndof_list[i];
     984                }
     985
     986                if(numdof){
     987                        /*Allocate: */
     988                        doflist=xNew<int>(numdof);
     989
     990                        /*Populate: */
     991                        count=0;
     992                        for(i=0;i<numnodes;i++){
     993                                nodes[i]->GetLocalDofList(&doflist[count],approximation,setenum);
     994                                count+=ndof_list[i];
     995                        }
     996
     997                        /*We now have something like: [0 1 0 2 1 2]. Offset by gsize, to get something like: [0 1 2 4 6 7]:*/
     998                        count=0;
     999                        for(i=0;i<numnodes;i++){
     1000                                for(j=0;j<ndof_list[i];j++){
     1001                                        doflist[count+j]+=ngdof_list_cumulative[i];
     1002                                }
     1003                                count+=ndof_list[i];
     1004                        }
     1005                }
     1006                else doflist=NULL;
     1007        }
     1008
     1009        /*Free ressources:*/
     1010        xDelete<int>(ndof_list);
     1011        xDelete<int>(ngdof_list_cumulative);
     1012
     1013        /*CLean-up and return*/
     1014        return doflist;
     1015}
     1016/*}}}*/
     1017int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation){/*{{{*/
     1018
     1019
     1020        int  i,numdof,count;
     1021        int* ndof_list=NULL;
     1022        int *doflist = NULL;
     1023
     1024        if(numnodes){
     1025
     1026                /*Allocate:*/
     1027                ndof_list=xNew<int>(numnodes);
     1028
     1029                /*First, figure out size of doflist: */
     1030                numdof=0;
     1031                for(i=0;i<numnodes;i++){
     1032                        ndof_list[i]=nodes[i]->GetNumberOfDofs(approximation,setenum);
     1033                        numdof+=ndof_list[i];
     1034                }
     1035
     1036                if(numdof){
     1037                        /*Allocate: */
     1038                        doflist=xNew<int>(numdof);
     1039
     1040                        /*Populate: */
     1041                        count=0;
     1042                        for(i=0;i<numnodes;i++){
     1043                                nodes[i]->GetDofList(&doflist[count],approximation,setenum);
     1044                                count+=ndof_list[i];
     1045                        }
     1046                }
     1047                else doflist=NULL;
     1048        }
     1049        /*Free ressources:*/
     1050        xDelete<int>(ndof_list);
     1051
     1052        return doflist;
     1053}
     1054/*}}}*/
     1055int GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation){/*{{{*/
     1056
     1057
     1058        /*output: */
     1059        int numberofdofs=0;
     1060
     1061        for(int i=0;i<numnodes;i++){
     1062                numberofdofs+=nodes[i]->GetNumberOfDofs(approximation,setenum);
     1063        }
     1064
     1065        return numberofdofs;
     1066}
     1067/*}}}*/
     1068#ifdef _HAVE_DIAGNOSTIC_
     1069void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum){/*{{{*/
     1070
     1071
     1072        int* cs_array=NULL;
     1073
     1074        /*All nodes have the same Coordinate System*/
     1075        cs_array=xNew<int>(numnodes);
     1076        for(int i=0;i<numnodes;i++) cs_array[i]=cs_enum;
     1077
     1078        /*Call core*/
     1079        TransformInvStiffnessMatrixCoord(Ke,nodes,numnodes,cs_array);
     1080
     1081        /*Clean-up*/
     1082        xDelete<int>(cs_array);
     1083}
     1084/*}}}*/
     1085void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array){/*{{{*/
     1086
     1087
     1088        int     i,j;
     1089        int     numdofs   = 0;
     1090        IssmDouble *transform = NULL;
     1091        IssmDouble *values    = NULL;
     1092
     1093        /*Get total number of dofs*/
     1094        for(i=0;i<numnodes;i++){
     1095                switch(cs_array[i]){
     1096                        case XYEnum:   numdofs+=2; break;
     1097                        case XYZPEnum: numdofs+=4; break;
     1098                        default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
     1099                }
     1100        }
     1101
     1102        /*Copy current stiffness matrix*/
     1103        values=xNew<IssmDouble>(Ke->nrows*Ke->ncols);
     1104        for(i=0;i<Ke->nrows;i++) for(j=0;j<Ke->ncols;j++) values[i*Ke->ncols+j]=Ke->values[i*Ke->ncols+j];
     1105
     1106        /*Get Coordinate Systems transform matrix*/
     1107        CoordinateSystemTransform(&transform,nodes,numnodes,cs_array);
     1108
     1109        /*Transform matrix: R*Ke*R^T */
     1110        TripleMultiply(transform,numdofs,numdofs,0,
     1111                                values,Ke->nrows,Ke->ncols,0,
     1112                                transform,numdofs,numdofs,1,
     1113                                &Ke->values[0],0);
     1114
     1115        /*Free Matrix*/
     1116        xDelete<IssmDouble>(transform);
     1117        xDelete<IssmDouble>(values);
     1118}
     1119/*}}}*/
     1120void TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int cs_enum){/*{{{*/
     1121
     1122        int* cs_array=NULL;
     1123
     1124        /*All nodes have the same Coordinate System*/
     1125        cs_array=xNew<int>(numnodes);
     1126        for(int i=0;i<numnodes;i++) cs_array[i]=cs_enum;
     1127
     1128        /*Call core*/
     1129        TransformLoadVectorCoord(pe,nodes,numnodes,cs_array);
     1130
     1131        /*Clean-up*/
     1132        xDelete<int>(cs_array);
     1133}
     1134/*}}}*/
     1135void TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int* cs_array){/*{{{*/
     1136
     1137
     1138        int     i;
     1139        int     numdofs   = 0;
     1140        IssmDouble *transform = NULL;
     1141        IssmDouble *values    = NULL;
     1142
     1143        /*Get total number of dofs*/
     1144        for(i=0;i<numnodes;i++){
     1145                switch(cs_array[i]){
     1146                        case XYEnum:   numdofs+=2; break;
     1147                        case XYZPEnum: numdofs+=4; break;
     1148                        default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
     1149                }
     1150        }
     1151
     1152        /*Copy current load vector*/
     1153        values=xNew<IssmDouble>(pe->nrows);
     1154        for(i=0;i<pe->nrows;i++) values[i]=pe->values[i];
     1155
     1156        /*Get Coordinate Systems transform matrix*/
     1157        CoordinateSystemTransform(&transform,nodes,numnodes,cs_array);
     1158
     1159        /*Transform matrix: R^T*pe */
     1160        MatrixMultiply(transform,numdofs,numdofs,1,
     1161                                values,pe->nrows,1,0,
     1162                                &pe->values[0],0);
     1163
     1164        /*Free Matrices*/
     1165        xDelete<IssmDouble>(transform);
     1166        xDelete<IssmDouble>(values);
     1167}
     1168/*}}}*/
     1169void TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int cs_enum){/*{{{*/
     1170
     1171
     1172        int* cs_array=NULL;
     1173
     1174        /*All nodes have the same Coordinate System*/
     1175        cs_array=xNew<int>(numnodes);
     1176        for(int i=0;i<numnodes;i++) cs_array[i]=cs_enum;
     1177
     1178        /*Call core*/
     1179        TransformSolutionCoord(solution,nodes,numnodes,cs_array);
     1180
     1181        /*Clean-up*/
     1182        xDelete<int>(cs_array);
     1183}
     1184/*}}}*/
     1185void TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int* cs_array){/*{{{*/
     1186
     1187
     1188        int     i;
     1189        int     numdofs   = 0;
     1190        IssmDouble *transform = NULL;
     1191        IssmDouble *values    = NULL;
     1192
     1193        /*Get total number of dofs*/
     1194        for(i=0;i<numnodes;i++){
     1195                switch(cs_array[i]){
     1196                        case XYEnum:   numdofs+=2; break;
     1197                        case XYZPEnum: numdofs+=4; break;
     1198                        default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
     1199                }
     1200        }
     1201
     1202        /*Copy current solution vector*/
     1203        values=xNew<IssmDouble>(numdofs);
     1204        for(i=0;i<numdofs;i++) values[i]=solution[i];
     1205
     1206        /*Get Coordinate Systems transform matrix*/
     1207        CoordinateSystemTransform(&transform,nodes,numnodes,cs_array);
     1208
     1209        /*Transform matrix: R*U */
     1210        MatrixMultiply(transform,numdofs,numdofs,0,
     1211                                values,numdofs,1,0,
     1212                                &solution[0],0);
     1213
     1214        /*Free Matrices*/
     1215        xDelete<IssmDouble>(transform);
     1216        xDelete<IssmDouble>(values);
     1217}
     1218/*}}}*/
     1219void TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum){/*{{{*/
     1220
     1221
     1222        int* cs_array=NULL;
     1223
     1224        /*All nodes have the same Coordinate System*/
     1225        cs_array=xNew<int>(numnodes);
     1226        for(int i=0;i<numnodes;i++) cs_array[i]=cs_enum;
     1227
     1228        /*Call core*/
     1229        TransformStiffnessMatrixCoord(Ke,nodes,numnodes,cs_array);
     1230
     1231        /*Clean-up*/
     1232        xDelete<int>(cs_array);
     1233}
     1234/*}}}*/
     1235void TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array){/*{{{*/
     1236
     1237
     1238        int     i,j;
     1239        int     numdofs   = 0;
     1240        IssmDouble *transform = NULL;
     1241        IssmDouble *values    = NULL;
     1242
     1243        /*Get total number of dofs*/
     1244        for(i=0;i<numnodes;i++){
     1245                switch(cs_array[i]){
     1246                        case XYEnum:   numdofs+=2; break;
     1247                        case XYZPEnum: numdofs+=4; break;
     1248                        default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
     1249                }
     1250        }
     1251
     1252        /*Copy current stiffness matrix*/
     1253        values=xNew<IssmDouble>(Ke->nrows*Ke->ncols);
     1254        for(i=0;i<Ke->nrows;i++) for(j=0;j<Ke->ncols;j++) values[i*Ke->ncols+j]=Ke->values[i*Ke->ncols+j];
     1255
     1256        /*Get Coordinate Systems transform matrix*/
     1257        CoordinateSystemTransform(&transform,nodes,numnodes,cs_array);
     1258
     1259        /*Transform matrix: R^T*Ke*R */
     1260        TripleMultiply(transform,numdofs,numdofs,1,
     1261                                values,Ke->nrows,Ke->ncols,0,
     1262                                transform,numdofs,numdofs,0,
     1263                                &Ke->values[0],0);
     1264
     1265        /*Free Matrix*/
     1266        xDelete<IssmDouble>(transform);
     1267        xDelete<IssmDouble>(values);
     1268}
     1269/*}}}*/
     1270void CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array){/*{{{*/
     1271
     1272
     1273        int     i,counter;
     1274        int     numdofs           = 0;
     1275        IssmDouble  norm;
     1276        IssmDouble *transform         = NULL;
     1277        IssmDouble *values            = NULL;
     1278        IssmDouble  coord_system[3][3];
     1279
     1280        /*Some checks in debugging mode*/
     1281        _assert_(numnodes && nodes);
     1282
     1283        /*Get total number of dofs*/
     1284        for(i=0;i<numnodes;i++){
     1285                switch(cs_array[i]){
     1286                        case XYEnum:   numdofs+=2; break;
     1287                        case XYZPEnum: numdofs+=4; break;
     1288                        default: _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
     1289                }
     1290        }
     1291
     1292        /*Allocate and initialize transform matrix*/
     1293        transform=xNew<IssmDouble>(numdofs*numdofs);
     1294        for(i=0;i<numdofs*numdofs;i++) transform[i]=0.0;
     1295
     1296        /*Create transform matrix for all nodes (x,y for 2d and x,y,z for 3d). It is a block matrix
     1297         *for 3 nodes:
     1298
     1299         *     | T1 0  0 |
     1300         * Q = | 0  T2 0 |
     1301         *     | 0  0  T3|
     1302         *
     1303         * Where T1 is the transform matrix for node 1. It is a simple copy of the coordinate system
     1304         * associated to this node*/
     1305        counter=0;
     1306        for(i=0;i<numnodes;i++){
     1307                nodes[i]->GetCoordinateSystem(&coord_system[0][0]);
     1308                switch(cs_array[i]){
     1309                        case XYEnum:
     1310                                /*We remove the z component, we need to renormalize x and y: x=[x1 x2 0] y=[-x2 x1 0]*/
     1311                                norm = sqrt( coord_system[0][0]*coord_system[0][0] + coord_system[1][0]*coord_system[1][0]); _assert_(norm>1.e-4);
     1312                                transform[(numdofs)*(counter+0) + counter+0] =   coord_system[0][0]/norm;
     1313                                transform[(numdofs)*(counter+0) + counter+1] = - coord_system[1][0]/norm;
     1314                                transform[(numdofs)*(counter+1) + counter+0] =   coord_system[1][0]/norm;
     1315                                transform[(numdofs)*(counter+1) + counter+1] =   coord_system[0][0]/norm;
     1316                                counter+=2;
     1317                                break;
     1318                        case XYZPEnum:
     1319                                /*Only the first 3 coordinates are changed (x,y,z), leave the others (P) unchanged*/
     1320                                transform[(numdofs)*(counter+0) + counter+0] = coord_system[0][0];
     1321                                transform[(numdofs)*(counter+0) + counter+1] = coord_system[0][1];
     1322                                transform[(numdofs)*(counter+0) + counter+2] = coord_system[0][2];
     1323                                transform[(numdofs)*(counter+1) + counter+0] = coord_system[1][0];
     1324                                transform[(numdofs)*(counter+1) + counter+1] = coord_system[1][1];
     1325                                transform[(numdofs)*(counter+1) + counter+2] = coord_system[1][2];
     1326                                transform[(numdofs)*(counter+2) + counter+0] = coord_system[2][0];
     1327                                transform[(numdofs)*(counter+2) + counter+1] = coord_system[2][1];
     1328                                transform[(numdofs)*(counter+2) + counter+2] = coord_system[2][2];
     1329                                transform[(numdofs)*(counter+3) + counter+3] = 1.0;
     1330                                counter+=4;
     1331                                break;
     1332                        default:
     1333                                _error_("Coordinate system " << EnumToStringx(cs_array[i]) << " not supported yet");
     1334                }
     1335        }
     1336
     1337        /*Assign output pointer*/
     1338        *ptransform=transform;
     1339}
     1340/*}}}*/
     1341#endif
  • issm/trunk-jpl/src/c/classes/objects/Node.h

    r14763 r14951  
    1818template <class doubletype> class  Vector;
    1919template <class doubletype> class  Matrix;
     20class ElementVector;
     21class ElementMatrix;
    2022#include "../Update.h"
    2123/*}}}*/
     
    100102};
    101103
     104/*Methods inherent to Node: */
     105int* GetLocalDofList(Node** nodes,int numnodes,int setenum,int approximation);
     106int* GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation);
     107int  GetNumberOfDofs(Node** nodes,int numnodes,int setenum,int approximation);
     108#ifdef _HAVE_DIAGNOSTIC_
     109void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
     110void TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
     111void TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int cs_enum);
     112void TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int* cs_array);
     113void TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int cs_enum);
     114void TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int* cs_array);
     115void TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
     116void TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
     117void CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array);
     118#endif
     119
    102120#endif  /* _NODE_H_ */
  • issm/trunk-jpl/src/c/classes/objects/Profiler.cpp

    r13607 r14951  
    1111
    1212#include "./Profiler.h"
     13#include "./Params/DoubleParam.h"
    1314/*}}}*/
    1415
  • issm/trunk-jpl/src/c/classes/objects/Vertex.cpp

    r14917 r14951  
    238238}
    239239/*}}}*/
     240
     241/*Methods relating to Vertex, but not internal methods: */
     242void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices){ /*{{{*/
     243
     244        _assert_(vertices);
     245        _assert_(xyz);
     246
     247        for(int i=0;i<numvertices;i++) {
     248                xyz[i*3+0]=vertices[i]->GetX();
     249                xyz[i*3+1]=vertices[i]->GetY();
     250                xyz[i*3+2]=vertices[i]->GetZ();
     251        }
     252}/*}}}*/
  • issm/trunk-jpl/src/c/classes/objects/Vertex.h

    r14917 r14951  
    5959                void       VertexCoordinates(Vector<IssmDouble>* vx,Vector<IssmDouble>* vy,Vector<IssmDouble>* vz);
    6060};
     61
     62/*Methods relating to Vertex object: */
     63void GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices, int numvertices);
     64
    6165#endif  /* _VERTEX_H */
  • issm/trunk-jpl/src/c/modules/ConfigureObjectsx/ConfigureObjectsx.cpp

    r14950 r14951  
    88#include "../../shared/io/io.h"
    99#include "../../toolkits/toolkits.h"
     10#include "../../classes/classes.h"
    1011#include "../../EnumDefinitions/EnumDefinitions.h"
    1112
  • issm/trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp

    r14950 r14951  
    88#include "../../EnumDefinitions/EnumDefinitions.h"
    99#include "../../Container/Container.h"
     10#include "../../classes/classes.h"
    1011#include "./GroundinglineMigrationx.h"
    1112
  • issm/trunk-jpl/src/c/modules/InputControlUpdatex/InputControlUpdatex.cpp

    r14917 r14951  
    55#include "./InputControlUpdatex.h"
    66#include "../../shared/shared.h"
     7#include "../../classes/classes.h"
    78#include "../../toolkits/toolkits.h"
    89#include "../../EnumDefinitions/EnumDefinitions.h"
  • issm/trunk-jpl/src/c/modules/InputConvergencex/InputConvergencex.cpp

    r14950 r14951  
    55#include "../../shared/shared.h"
    66#include "../../shared/io/io.h"
     7#include "../../classes/classes.h"
    78#include "../../toolkits/toolkits.h"
    89#include "../../EnumDefinitions/EnumDefinitions.h"
  • issm/trunk-jpl/src/c/modules/InputDuplicatex/InputDuplicatex.cpp

    r14917 r14951  
    55#include "./InputDuplicatex.h"
    66#include "../../shared/shared.h"
     7#include "../../classes/classes.h"
    78#include "../../toolkits/toolkits.h"
    89#include "../../EnumDefinitions/EnumDefinitions.h"
  • issm/trunk-jpl/src/c/modules/InputScalex/InputScalex.cpp

    r14917 r14951  
    66#include "../../shared/shared.h"
    77#include "../../toolkits/toolkits.h"
     8#include "../../classes/classes.h"
    89#include "../../EnumDefinitions/EnumDefinitions.h"
    910
  • issm/trunk-jpl/src/c/modules/InputToResultx/InputToResultx.cpp

    r14917 r14951  
    55#include "./InputToResultx.h"
    66#include "../../shared/shared.h"
     7#include "../../classes/classes.h"
    78#include "../../toolkits/toolkits.h"
    89#include "../../EnumDefinitions/EnumDefinitions.h"
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateNumberNodeToElementConnectivity.cpp

    r14950 r14951  
    1010
    1111#include "../../shared/shared.h"
     12#include "../../classes/classes.h"
    1213#include "../../shared/io/io.h"
    1314#include "./ModelProcessorx.h"
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateSingleNodeToElementConnectivity.cpp

    r14950 r14951  
    1111#include "../../shared/shared.h"
    1212#include "../../shared/io/io.h"
     13#include "../../classes/classes.h"
    1314#include "./ModelProcessorx.h"
    1415
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/DistributeNumDofs.cpp

    r14917 r14951  
    44
    55#include "../../shared/shared.h"
     6#include "../../classes/classes.h"
    67#include "../../EnumDefinitions/EnumDefinitions.h"
    78
  • issm/trunk-jpl/src/c/shared/Elements/Arrhenius.cpp

    r12475 r14951  
    33 */
    44
     5#include <math.h>
    56#include "./elements.h"
    6 #include <math.h>
     7#include "../Exceptions/exceptions.h"
    78
    89IssmDouble Arrhenius(IssmDouble temperature,IssmDouble depth,IssmDouble n){
  • issm/trunk-jpl/src/c/shared/Elements/ComputeDelta18oTemperaturePrecipitation.cpp

    r12923 r14951  
    55
    66#include "./elements.h"
     7#include "../Numerics/numerics.h"
    78
    89void ComputeDelta18oTemperaturePrecipitation(IssmDouble Delta18oSurfacePresent, IssmDouble Delta18oSurfaceLgm, IssmDouble Delta18oSurfaceTime,
  • issm/trunk-jpl/src/c/shared/Elements/Paterson.cpp

    r14915 r14951  
    77#include <math.h>
    88
    9 #include "../../shared/Numerics/types.h"
     9#include "../Numerics/types.h"
    1010
    1111IssmDouble Paterson(IssmDouble temperature){
  • issm/trunk-jpl/src/c/shared/Elements/PddSurfaceMassBalance.cpp

    r14735 r14951  
    44
    55#include "./elements.h"
     6#include "../Numerics/numerics.h"
    67
    78IssmDouble PddSurfaceMassBlance(IssmDouble* monthlytemperatures, IssmDouble* monthlyprec, IssmDouble* pdds, IssmDouble* pds, IssmDouble signorm, IssmDouble yts, IssmDouble h, IssmDouble s, IssmDouble rho_ice, IssmDouble rho_water, IssmDouble desfac, IssmDouble s0p){
  • issm/trunk-jpl/src/c/shared/Elements/PrintArrays.cpp

    r14914 r14951  
    11
    22#include "./elements.h"
     3#include "../io/Print/Print.h"
    34using namespace std;
    45
  • issm/trunk-jpl/src/c/shared/Elements/elements.h

    r14763 r14951  
    66#define _SHARED_ELEMENTS_H_
    77
    8 #include "../../classes/objects/objects.h"
    9 #include "../../Container/Container.h"
     8#include "../Numerics/types.h"
    109class ElementMatrix;
    1110class ElementVector;
    1211class Vertex;
     12class Node;
    1313
    1414IssmDouble Paterson(IssmDouble temperature);
     
    2222                                     IssmDouble* TemperaturesLgm, IssmDouble* TemperaturesPresentday,
    2323                                             IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout);
    24 void   GetVerticesCoordinates(IssmDouble* xyz,Vertex** vertices,int numvertices);
    25 int    GetNumberOfDofs( Node** nodes,int numnodes,int setenum,int approximation_enum);
    26 int*   GetLocalDofList( Node** nodes,int numnodes,int setenum,int approximation_enum);
    27 int*   GetGlobalDofList(Node** nodes,int numnodes,int setenum,int approximation_enum);
    28 
    29 #ifdef _HAVE_DIAGNOSTIC_
    30 void   CoordinateSystemTransform(IssmDouble** ptransform,Node** nodes,int numnodes,int* cs_array);
    31 void   TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
    32 void   TransformInvStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
    33 void   TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int cs_enum);
    34 void   TransformStiffnessMatrixCoord(ElementMatrix* Ke,Node** nodes,int numnodes,int* cs_array);
    35 void   TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int cs_enum);
    36 void   TransformLoadVectorCoord(ElementVector* pe,Node** nodes,int numnodes,int* cs_array);
    37 void   TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int cs_enum);
    38 void   TransformSolutionCoord(IssmDouble* solution,Node** nodes,int numnodes,int* cs_array);
    39 #endif
    4024
    4125/*Print arrays*/
  • issm/trunk-jpl/src/c/shared/Exceptions/Exceptions.cpp

    r14917 r14951  
    99#endif
    1010
    11 #include "../shared.h"
     11#include "./exceptions.h"
     12#include "../io/Print/Print.h"
     13#include "../io/Comm/Comm.h"
    1214
    1315ErrorException::ErrorException(const string &what_arg){/*{{{*/
Note: See TracChangeset for help on using the changeset viewer.