|
| 1 | +/*//------------------------------------------------------------------------------------- |
| 2 | +//Ji-Jj analyser |
| 3 | +//-------------------------------------------------------------------------------------- |
| 4 | + for (int in = 0; in < Edgenumb; in++) |
| 5 | + for (int j = 0; j < 100; j++) |
| 6 | + JEdgeNeigh[in][j] = -10; |
| 7 | +
|
| 8 | +for(int ih = 0; ih < Edgenumb; ih++) { |
| 9 | + knn=0; |
| 10 | +//Сначала мы выясняем тип самой грани |
| 11 | + J1count=0; JN0Count=0; |
| 12 | + for (int lk = 0; lk < Facenumb; lk++) { if(MFE1[lk][ih] == 2) JN0Count++; if(MFE1[lk][ih] >= 1) J1count++; } |
| 13 | + if(J1count > 1) JEdgeNeigh[ih][0] = JN0Count; |
| 14 | +// {cout<<" il= "<<ih<<" JEdgeNeigh0= "<<JEdgeNeigh[ih][0]<<endl; system("pause");} |
| 15 | + //Сначала в 0-ячейку собственный тип ребра // |
| 16 | + } |
| 17 | +
|
| 18 | +for(int ih = 0; ih < Edgenumb; ih++) { |
| 19 | + knn=1; |
| 20 | +//Затем проходим всех ее соседей |
| 21 | + for (int lmn = 0; lmn < 100; lmn++) { |
| 22 | + if(EdgeNeighbours[ih][lmn]>=0) knumb = EdgeNeighbours[ih][lmn]; |
| 23 | + else knumb=-1; |
| 24 | +//------------------------------------------------------ |
| 25 | + J1count=0; JNCount=0; |
| 26 | + if(knumb>=0) { for (int lk = 0; lk < Facenumb; lk++) { if(MFE1[lk][knumb] == 2) JNCount++; if(MFE1[lk][knumb] >= 1) J1count++; } |
| 27 | +//----------------------------------------------------- |
| 28 | + if(J1count > 1) JEdgeNeigh[ih][knn++] = JNCount; |
| 29 | + else JEdgeNeigh[ih][knn+1]=-1; //knn++ |
| 30 | +
|
| 31 | + } } } |
| 32 | +
|
| 33 | +//Вывод в файл JEdgeNeigh.txt |
| 34 | +if(i==10) { |
| 35 | + JEdgeN.open("C:\\Users\\v94623eb\\Dropbox\\Projects\\Current simmulation\\Voronois\\Voronois\\VAnRes\\(HAGBs)JEdgeNeigh10.txt", ios::trunc); |
| 36 | + for (int il = 0; il < Edgenumb; il++) { |
| 37 | + for (int jl = 0; jl < 100; jl++) { |
| 38 | + if(JEdgeNeigh[il][jl]>=0) JEdgeN << JEdgeNeigh[il][jl] << "\t"; |
| 39 | + } |
| 40 | + JEdgeN <<"Edge number="<<il<<"\n"; |
| 41 | + } |
| 42 | + JEdgeN.close(); |
| 43 | + } |
| 44 | +
|
| 45 | + for (int ip = 0; ip < 10; ip++) |
| 46 | + for (int j = 0; j < 10; j++) |
| 47 | + JEN[ip][j] = 0; |
| 48 | +
|
| 49 | +//Анализ матрицы JEdgeNeigh[i][j] |
| 50 | +for (int il = 0; il < Edgenumb; il++) //для каждой грани |
| 51 | + for (int nl = 0; nl < 10; nl++) //мы перебираем все варианты какой она может быть |
| 52 | + if(JEdgeNeigh[il][0] == nl) for (int mj = 1; mj < 100; mj++) //НАЧАЛО С 1, ЧТОБЫ НЕ УЧИТЫВАТЬ САМУ ГРАНЬ КАК СОСЕДА// и если она оказалась определенного типа, то мы перебираем всех ее соседей |
| 53 | + for (int nk = 0; nk < 10; nk++) if(JEdgeNeigh[il][mj] == nk) JEN[nl][nk]++; //так что если сосед оказывается также определенного типа, то мы заносим их связь в матрицу JEN |
| 54 | +
|
| 55 | +
|
| 56 | +//Полсчет "мощности" каждого тройного стыка с учетом соседей |
| 57 | +for (int il = 0; il < Edgenumb; il++) { |
| 58 | + TJpow[il]=0; NEneigh=0; for (int jl = 0; jl < 100; jl++) if(JEdgeNeigh[il][jl]>=0) {TJpow[il]+= JEdgeNeigh[il][jl]; NEneigh++; }; |
| 59 | + TJpow[il] = TJpow[il]/NEneigh; |
| 60 | +//Только ненулевые стыки |
| 61 | + TJpow2[il]=0; NEneigh2=0; for (int jl = 0; jl < 100; jl++) if(JEdgeNeigh[il][jl]>=0 && JEdgeNeigh[il][0]>0) {TJpow2[il]+= JEdgeNeigh[il][jl]; NEneigh2++; }; |
| 62 | + TJpow2[il] = TJpow2[il]/NEneigh2; |
| 63 | +} |
| 64 | +
|
| 65 | +
|
| 66 | +//Подсчет среднего по комплексу и дисперсии DISPERSION!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| 67 | +//!!!!!!!!!!!!!!!! |
| 68 | +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!/ |
| 69 | +//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
| 70 | +NEneighSum=0.0; NEneighAv=0; for (int il = 0; il < Edgenumb; il++) if(TJpow[il]>=0) {NEneighSum += TJpow[il]; NEneighAv++;} |
| 71 | +NEneighSum = NEneighSum/NEneighAv; |
| 72 | +
|
| 73 | +//Только ненулевые стыки |
| 74 | +NEneighSum2=0.0; NEneighAv2=0; for (int il = 0; il < Edgenumb; il++) if(TJpow2[il]>0) {NEneighSum2 += TJpow2[il]; NEneighAv2++;} |
| 75 | +NEneighSum2 = NEneighSum2/NEneighAv2; |
| 76 | +
|
| 77 | +//Dispersion |
| 78 | +SNEneighSum=0.0; NEneighAv=0; for (int il = 0; il < Edgenumb; il++) if(TJpow[il]>=0) {SNEneighSum += (TJpow[il]*TJpow[il]); NEneighAv++;} |
| 79 | +SNEneighSum = SNEneighSum/(NEneighAv); |
| 80 | +//Только ненулевые стыки |
| 81 | +SNEneighSum2=0.0; NEneighAv2=0; for (int il = 0; il < Edgenumb; il++) if(TJpow2[il]>0) {SNEneighSum2 += (TJpow2[il]*TJpow2[il]); NEneighAv2++;} |
| 82 | +SNEneighSum2 = SNEneighSum2/(NEneighAv2); |
| 83 | +
|
| 84 | +if((SNEneighSum - NEneighSum*NEneighSum) >0) DispNES1 = sqrtl(SNEneighSum - NEneighSum*NEneighSum); |
| 85 | +else DispNES1 = sqrtl(-SNEneighSum +NEneighSum*NEneighSum); |
| 86 | +if((SNEneighSum2 - NEneighSum2*NEneighSum2) >0) DispNES2 = sqrtl(SNEneighSum2 - NEneighSum2*NEneighSum2); |
| 87 | +else DispNES2 = sqrtl(-SNEneighSum2 +NEneighSum2*NEneighSum2); |
| 88 | +
|
| 89 | + JEdgeN.open("C:\\Users\\v94623eb\\Dropbox\\Projects\\Current simmulation\\Voronois\\Voronois\\VAnRes\\(HAGBs)TJspow.txt", ios::app); |
| 90 | + JEdgeN << HAGBsFunc[i][0]<<"\t"<<25.0*powf(10,6)/(sqrtf(RHOD))<<"\t"<<30.0*powf(10,6)/(HAGBsFunc[i][1]*sqrtf(RHOD))<<"\t"<< 30.0*powf(10,6)*NEneighSum/(NEneighSum2*HAGBsFunc[i][1]*sqrtf(RHOD))<<"\t"<< 3.0*27.0*powf(10,6)/(NEneighSum2*HAGBsFunc[i][1]*sqrtf(RHOD)); |
| 91 | +
|
| 92 | +// if(NEneighSum2>0) JEdgeN <<HAGBsFunc[i][0]<<"\t"<<NEneighSum<<"\t"<<NEneighSum2<<"\t"<<DispNES1<<"\t"<<DispNES2<<"\t"<<2.2*powl(NEneighSum,(-1.0/1.0))<<"\t"<<2.2*powl(NEneighSum2,(-1.0/1.0)); //<<"\t"<<SNEneighSum<<"\t"<<SNEneighSum2; |
| 93 | +// else JEdgeN <<HAGBsFunc[i][0]<<"\t"<<NEneighSum<<"\t"<<0.0; |
| 94 | +// JEdgeN <<"Accumulated Strain = "<<HAGBsFunc[i][0]<<"\n"; |
| 95 | +// JEdgeN<< NEneighSum << "\t"; |
| 96 | +//Мощность всех узлов |
| 97 | +// for(int il = 0; il < Edgenumb; il++) if(TJpow[il]>=0) JEdgeN<<TJpow[il] << "\t"; |
| 98 | + JEdgeN <<"\n"; |
| 99 | + JEdgeN.close(); |
| 100 | +
|
| 101 | +//-------------------------------------------------------------------------------------- |
| 102 | +
|
| 103 | +//Вывод в файл JEN.txt |
| 104 | + JENStream.open("C:\\Users\\v94623eb\\Dropbox\\Projects\\Current simmulation\\Voronois\\Voronois\\VAnRes\\(HAGBs)JEN.txt", ios::app); |
| 105 | + JENStream <<AcStrain<<endl; |
| 106 | + for (int i = 0; i < 10; i++) { |
| 107 | + for (int j = 0; j < 10; j++) if(JEN[i][j]>=0) JENStream << JEN[i][j] << "\t"; |
| 108 | + // JENStream << JEN[i][j] << "\t"; |
| 109 | + JENStream <<"\n"; |
| 110 | + } |
| 111 | +// Очевидно, что при таком алгоритме диагональные элементы учитываются дважды, а также считаем число всех элементов и делим потом на него, то есть |
| 112 | + SumJEN=0; Jenii=0; Jenij=0; |
| 113 | + for (int ic = 0; ic < 10; ic++) |
| 114 | + for (int jc = 0; jc < 10; jc++) {SumJEN += 0.5*JEN[ic][jc]; if(ic==jc) Jenii+=0.5*JEN[ic][jc]; else Jenij+=0.5*JEN[ic][jc]; } |
| 115 | +//cout<< SumJEN <<endl; |
| 116 | +
|
| 117 | + JENStream <<"\n"<<"\n"<<"\n"; |
| 118 | + JENStream.close(); |
| 119 | +//***cout<<"(HAGBs)JEN.txt has been created"<<endl; |
| 120 | +
|
| 121 | + JENStream.open("C:\\Users\\v94623eb\\Dropbox\\Projects\\Current simmulation\\Voronois\\Voronois\\VAnRes\\(HAGBs)Jlk.txt", ios::app); |
| 122 | +// if(i==0) JENStream << "STRAIN" << "\t"<<"ii"<<"\t"<<"ij"<<"\t"<<"00"<<"\t"<<"11"<<"\t"<<"22"<<"\t"<<"33"<<"\t"<<"01"<<"\t"<<"02"<<"\t"<<"03"<<"\t"<<"12"<<"\t"<<"13"<<"\t"<<"23"<<endl; |
| 123 | + if(i==0) JENStream << "STRAIN" << "\t"<<"ii"<<"\t"<<"ij"<<"\t"<<endl; |
| 124 | + JENStream << HAGBsFunc[i][0]<<"\t"<<Jenii*100.0/SumJEN<<"\t"<< Jenij*100.0/SumJEN; |
| 125 | +// JENStream << HAGBsFunc[i][0]<<"\t"<<JEN[0][0] + JEN[1][1] + JEN[2][2] + JEN[3][3] + JEN[4][4]<<"\t"<< JEN[0][1] + JEN[0][2] + JEN[0][3] + JEN[1][2] + JEN[1][3] + JEN[2][3] + JEN[2][4] + JEN[3][4] << "\t"<< JEN[0][0] << "\t"<< JEN[1][1] << "\t"<< JEN[2][2] << "\t"<< JEN[3][3] << "\t"<< JEN[0][1] << "\t"<< JEN[0][2] << "\t"<< JEN[0][3] << "\t"<< JEN[1][2] << "\t"<< JEN[1][3] << "\t"<< JEN[2][3]; // JENStream << HAGBsFunc[i][0]<<"\t"<<JEN[0][0] + JEN[1][1] + JEN[2][2] + JEN[3][3]<<"\t"<< JEN[0][1] + JEN[1][0] + JEN[0][2] + JEN[2][0] + JEN[0][3] + JEN[3][0] + JEN[1][2] + JEN[2][1] + JEN[1][3] + JEN[3][1] + JEN[2][3] + JEN[3][2]<< "\t"<< JEN[0][1] + JEN[1][0]<< "\t"<< JEN[0][2] + JEN[2][0]<< "\t"<< JEN[0][3] + JEN[0][3]<< "\t"<< JEN[1][2] + JEN[2][1]<< "\t"<< JEN[1][3] + JEN[3][1]<< "\t"<< JEN[2][3] + JEN[3][2]; |
| 126 | +// JENStream << HAGBsFunc[i][0]<<"\t"<<JEN[0][0] + JEN[1][1] + JEN[2][2] + JEN[3][3]<<"\t"<< JEN[0][1] + JEN[0][2] + JEN[0][3] + JEN[1][2] + JEN[1][3] + JEN[2][3] << "\t"<< JEN[0][1] << "\t"<< JEN[0][2] << "\t"<< JEN[0][3] << "\t"<< JEN[1][2] << "\t"<< JEN[1][3] << "\t"<< JEN[2][3]; // JENStream << 0*JEN[0][0] + 2*JEN[1][1] + 4*JEN[2][2] + 6*JEN[3][3]<<"\t"<< JEN[0][1] + JEN[1][0] + 2*JEN[0][2] + 2*JEN[2][0] + 3*JEN[0][3] + 3*JEN[3][0] + 3*JEN[1][2] + 3*JEN[2][1] + 4*JEN[1][3] + 4*JEN[3][1] + 5*JEN[2][3] + 5*JEN[3][2]<< "\t"<< JEN[0][1] + JEN[1][0]<< "\t"<< 2*JEN[0][2] + 2*JEN[2][0]<< "\t"<< 3*JEN[0][3] + 3*JEN[0][3]<< "\t"<< 3*JEN[1][2] + 3*JEN[2][1]<< "\t"<< 4*JEN[1][3] + 4*JEN[3][1]<< "\t"<< 5*JEN[2][3] + 5*JEN[3][2]; |
| 127 | + JENStream <<"\n"; |
| 128 | + JENStream.close(); |
| 129 | +*/ |
0 commit comments