Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

VtxMaps.C

Go to the documentation of this file.
00001 
00008 #include <cstdio>
00009 #include <iostream>
00010 #include <cassert>
00011 
00012 namespace ot {
00013 
00014   int readVtxMaps(unsigned short ****&map1, unsigned short *****&map2,
00015       unsigned short *****&map3, unsigned short ******&map4) {
00016 
00017     FILE* infile;
00018     char fname[100];
00019     sprintf(fname,"vtxMap.inp");
00020     infile = fopen(fname,"r");
00021     if(!infile) {
00022       std::cout<<"The file "<<fname<<" is not good for reading."<<std::endl;
00023       assert(false);
00024     }
00025 
00026     typedef unsigned short***** us5Ptr;
00027     typedef unsigned short**** us4Ptr;
00028     typedef unsigned short*** us3Ptr;
00029     typedef unsigned short** us2Ptr;
00030     typedef unsigned short* usPtr;
00031 
00032     map1 = new us3Ptr[8];
00033     map2 = new us4Ptr[8];
00034     for(int fineElemNum = 0; fineElemNum < 8;fineElemNum++) {
00035       map1[fineElemNum] = new us2Ptr[8];
00036       for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00037         map1[fineElemNum][cNumCoarse] = new usPtr[18];
00038         for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00039           map1[fineElemNum][cNumCoarse][eTypeCoarse] = new unsigned short[8];
00040           for(int vCtr = 0; vCtr < 8; vCtr++) {
00041             fscanf(infile,"%hu",
00042                 &(map1[fineElemNum][cNumCoarse][eTypeCoarse][vCtr]));
00043           }
00044         }
00045       }
00046       map2[fineElemNum] = new us3Ptr[8];
00047       for(int cNumFine = 0; cNumFine < 8; cNumFine++) {
00048         map2[fineElemNum][cNumFine] = new us2Ptr[8];
00049         for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00050           map2[fineElemNum][cNumFine][cNumCoarse] = new usPtr[18];
00051           for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00052             map2[fineElemNum][cNumFine][cNumCoarse][eTypeCoarse] = new unsigned short[8];
00053             for(int vCtr = 0; vCtr < 8; vCtr++) {
00054               fscanf(infile,"%hu",
00055                   &(map2[fineElemNum][cNumFine][cNumCoarse][eTypeCoarse][vCtr]));
00056             }
00057           }
00058         }
00059       }
00060     }
00061 
00062     map3 = new us4Ptr[7];
00063     map4 = new us5Ptr[7];
00064     for(int fineElemNum = 0; fineElemNum < 7; fineElemNum++) { 
00065       map3[fineElemNum] = new us3Ptr[2];
00066       map4[fineElemNum] = new us4Ptr[2];
00067       for(int scalingCtr = 0; scalingCtr < 2; scalingCtr++) {
00068         map3[fineElemNum][scalingCtr] = new us2Ptr[8];
00069         for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00070           map3[fineElemNum][scalingCtr][cNumCoarse] = new usPtr[18];
00071           for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00072             map3[fineElemNum][scalingCtr][cNumCoarse][eTypeCoarse] =new unsigned short[8];
00073             for(int vCtr = 0; vCtr < 8; vCtr++) {
00074               fscanf(infile,"%hu",
00075                   &(map3[fineElemNum][scalingCtr][cNumCoarse][eTypeCoarse][vCtr]));
00076             }
00077           }
00078         }
00079         map4[fineElemNum][scalingCtr] = new us3Ptr[8]; 
00080         for(int cNumFine = 0; cNumFine < 8; cNumFine++) {
00081           map4[fineElemNum][scalingCtr][cNumFine] = new us2Ptr[8];
00082           for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00083             map4[fineElemNum][scalingCtr][cNumFine][cNumCoarse] = new usPtr[18];
00084             for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00085               map4[fineElemNum][scalingCtr][cNumFine][cNumCoarse][eTypeCoarse] = new unsigned short[8];
00086               for(int vCtr = 0; vCtr < 8; vCtr++) {
00087                 fscanf(infile,"%hu",
00088                     &(map4[fineElemNum][scalingCtr][cNumFine][cNumCoarse][eTypeCoarse][vCtr]));
00089               }
00090             }
00091           }
00092         }
00093       }
00094     }
00095 
00096     fclose(infile);
00097     return 1;
00098   }//end of function
00099 
00100   int IreadVtxMaps(unsigned short ****&map1, unsigned short *****&map2,
00101       unsigned short *****&map3, unsigned short ******&map4, int rank) {
00102 
00103     FILE* infile;
00104     char fname[250];
00105     sprintf(fname,"vtxMap_%d.inp", rank);
00106     infile = fopen(fname,"r");
00107     if(!infile) {
00108       std::cout<<"The file "<<fname<<" is not good for reading."<<std::endl;
00109       assert(false);
00110     }
00111 
00112     typedef unsigned short***** us5Ptr;
00113     typedef unsigned short**** us4Ptr;
00114     typedef unsigned short*** us3Ptr;
00115     typedef unsigned short** us2Ptr;
00116     typedef unsigned short* usPtr;
00117 
00118     map1 = new us3Ptr[8];
00119     map2 = new us4Ptr[8];
00120     for(int fineElemNum = 0; fineElemNum < 8;fineElemNum++) {
00121       map1[fineElemNum] = new us2Ptr[8];
00122       for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00123         map1[fineElemNum][cNumCoarse] = new usPtr[18];
00124         for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00125           map1[fineElemNum][cNumCoarse][eTypeCoarse] = new unsigned short[8];
00126           for(int vCtr = 0; vCtr < 8; vCtr++) {
00127             fscanf(infile,"%hu",
00128                 &(map1[fineElemNum][cNumCoarse][eTypeCoarse][vCtr]));
00129           }
00130         }
00131       }
00132       map2[fineElemNum] = new us3Ptr[8];
00133       for(int cNumFine = 0; cNumFine < 8; cNumFine++) {
00134         map2[fineElemNum][cNumFine] = new us2Ptr[8];
00135         for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00136           map2[fineElemNum][cNumFine][cNumCoarse] = new usPtr[18];
00137           for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00138             map2[fineElemNum][cNumFine][cNumCoarse][eTypeCoarse] = new unsigned short[8];
00139             for(int vCtr = 0; vCtr < 8; vCtr++) {
00140               fscanf(infile,"%hu",
00141                   &(map2[fineElemNum][cNumFine][cNumCoarse][eTypeCoarse][vCtr]));
00142             }
00143           }
00144         }
00145       }
00146     }
00147 
00148     map3 = new us4Ptr[7];
00149     map4 = new us5Ptr[7];
00150     for(int fineElemNum = 0; fineElemNum < 7; fineElemNum++) { 
00151       map3[fineElemNum] = new us3Ptr[2];
00152       map4[fineElemNum] = new us4Ptr[2];
00153       for(int scalingCtr = 0; scalingCtr < 2; scalingCtr++) {
00154         map3[fineElemNum][scalingCtr] = new us2Ptr[8];
00155         for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00156           map3[fineElemNum][scalingCtr][cNumCoarse] = new usPtr[18];
00157           for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00158             map3[fineElemNum][scalingCtr][cNumCoarse][eTypeCoarse] =new unsigned short[8];
00159             for(int vCtr = 0; vCtr < 8; vCtr++) {
00160               fscanf(infile,"%hu",
00161                   &(map3[fineElemNum][scalingCtr][cNumCoarse][eTypeCoarse][vCtr]));
00162             }
00163           }
00164         }
00165         map4[fineElemNum][scalingCtr] = new us3Ptr[8]; 
00166         for(int cNumFine = 0; cNumFine < 8; cNumFine++) {
00167           map4[fineElemNum][scalingCtr][cNumFine] = new us2Ptr[8];
00168           for(int cNumCoarse = 0; cNumCoarse < 8; cNumCoarse++) {
00169             map4[fineElemNum][scalingCtr][cNumFine][cNumCoarse] = new usPtr[18];
00170             for(int eTypeCoarse = 0; eTypeCoarse < 18; eTypeCoarse++) {
00171               map4[fineElemNum][scalingCtr][cNumFine][cNumCoarse][eTypeCoarse] = new unsigned short[8];
00172               for(int vCtr = 0; vCtr < 8; vCtr++) {
00173                 fscanf(infile,"%hu",
00174                     &(map4[fineElemNum][scalingCtr][cNumFine][cNumCoarse][eTypeCoarse][vCtr]));
00175               }
00176             }
00177           }
00178         }
00179       }
00180     }
00181 
00182     fclose(infile);
00183     return 1;
00184   }//end of function
00185 
00186   int destroyVtxMaps(unsigned short ****&map1, unsigned short *****&map2,
00187       unsigned short *****&map3, unsigned short ******&map4) {
00188 
00189     for(int i = 0; i < 8; i++) {
00190       for(int j = 0; j < 8; j++) {
00191         for(int k = 0; k < 18; k++) {
00192           delete [] map1[i][j][k];
00193           map1[i][j][k] = NULL;
00194         }
00195         delete [] map1[i][j];
00196         map1[i][j] = NULL;
00197       }
00198       delete [] map1[i];
00199       map1[i] = NULL;
00200     }
00201     delete [] map1;
00202     map1 = NULL;
00203 
00204     for(int i = 0; i < 8; i++) {
00205       for(int j = 0; j < 8; j++) {
00206         for(int k = 0; k < 8; k++) {
00207           for(int l = 0;l < 18; l++) {
00208             delete [] map2[i][j][k][l];
00209             map2[i][j][k][l] = NULL;
00210           }
00211           delete [] map2[i][j][k];
00212           map2[i][j][k] = NULL;
00213         }
00214         delete [] map2[i][j];
00215         map2[i][j] = NULL;
00216       }
00217       delete [] map2[i];
00218       map2[i] = NULL;
00219     }
00220     delete [] map2;
00221     map2 = NULL;
00222 
00223     for(int i = 0; i < 7; i++) {
00224       for(int j = 0; j < 2; j++) {
00225         for(int k = 0; k < 8; k++) {
00226           for(int l = 0; l < 18; l++) {
00227             delete [] map3[i][j][k][l];
00228             map3[i][j][k][l] = NULL;
00229           }
00230           delete [] map3[i][j][k];
00231           map3[i][j][k] = NULL;
00232         }
00233         delete [] map3[i][j];
00234         map3[i][j] = NULL;
00235       }
00236       delete [] map3[i];
00237       map3[i] = NULL;
00238     }
00239     delete [] map3;
00240     map3 = NULL;
00241 
00242     for(int i = 0; i < 7; i++) {
00243       for(int j = 0; j < 2; j++) {
00244         for(int k = 0; k < 8; k++) {
00245           for(int l = 0; l < 8; l++) {
00246             for(int m = 0; m < 18; m++) {
00247               delete [] map4[i][j][k][l][m];
00248               map4[i][j][k][l][m] = NULL;
00249             }
00250             delete [] map4[i][j][k][l];
00251             map4[i][j][k][l] = NULL;
00252           }
00253           delete [] map4[i][j][k];
00254           map4[i][j][k] = NULL;
00255         }
00256         delete [] map4[i][j];
00257         map4[i][j] = NULL;
00258       }
00259       delete [] map4[i];
00260       map4[i] = NULL;
00261     }
00262     delete [] map4;
00263     map4 = NULL;
00264 
00265     return 1;
00266   }//end of function
00267 
00268 }//end namespace
00269 
00270 
00271 

Generated on Tue Mar 24 16:14:06 2009 for DENDRO by  doxygen 1.3.9.1