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 }
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 }
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 }
00267
00268 }
00269
00270
00271