Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

эвакуация 3

.docx
Скачиваний:
7
Добавлен:
13.05.2015
Размер:
100.57 Кб
Скачать

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { elemL = hx; qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

d_tranzit = (qmax_xx-elemxx.d_elem)*elemS; // вместимость элемента, чел.

if ( d_tranzit > ntran ) { elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS; }

else { elemxx.d_elem = elemxx.d_elem + d_tranzit/elemS;

elemk_near.d_elem = elemk_near.d_elem - d_tranzit/elemS; }

} } } } }; break; }; // swicth

if ((direct == 1) | (direct == -1))

{ if ((k_near=elemxx.yincrease) >=0) // сосед +y в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка +y от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == -2 ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!515! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { elemL=hx; qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

if (elemxx.d_elem < qmax_xx) {

d_tranzit = (qmax_xx-elemxx.d_elem)*elemS; // вместимость элемента, чел.

if ( d_tranzit > ntran ) { elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS; }

else { elemxx.d_elem = elemxx.d_elem + d_tranzit/elemS;

elemk_near.d_elem = elemk_near.d_elem - d_tranzit/elemS; } }

} } } };

if ((k_near=elemxx.yreduction) >=0) // сосед -y в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -y от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == 2 ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!525! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { elemL=hx; qin = elemk_near.velem()*elemk_near.d_elem;}

ntran = elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

if (elemxx.d_elem < qmax_xx) {

d_tranzit = (qmax_xx-elemxx.d_elem)*elemS; // вместимость элемента, чел.

if ( d_tranzit > ntran ) { elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS; }

else { elemxx.d_elem = elemxx.d_elem + d_tranzit/elemS;

elemk_near.d_elem = elemk_near.d_elem - d_tranzit/elemS; } }

} } } };

};

if ((direct == 2) | (direct == -2))

{ if ((k_near=elemxx.xincrease) >=0) // сосед +x в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка +x от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == -1 ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!541! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { elemL=hy; qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

if (elemxx.d_elem < qmax_xx) {

d_tranzit = (qmax_xx-elemxx.d_elem)*elemS; // вместимость элемента, чел.

if ( d_tranzit > ntran ) { elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS; }

else { elemxx.d_elem = elemxx.d_elem + d_tranzit/elemS;

elemk_near.d_elem = elemk_near.d_elem - d_tranzit/elemS; } }

} } } };

if ((k_near=elemxx.xreduction) >=0) // сосед -x в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -x от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == 1 ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!555! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { elemL=hy; qin = elemk_near.velem()*elemk_near.d_elem;}

ntran = elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

if (elemxx.d_elem < qmax_xx) {

d_tranzit = (qmax_xx-elemxx.d_elem)*elemS; // вместимость элемента, чел.

if ( d_tranzit > ntran ) { elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS; }

else { elemxx.d_elem = elemxx.d_elem + d_tranzit/elemS;

elemk_near.d_elem = elemk_near.d_elem - d_tranzit/elemS; } }

} } } };

} } } };

}

peopleTotal=0;

for (int kp=0; kp<n_Out; kp++) // Выходы из расчетной области (здания)

{ peopleTotal=peopleTotal+ peopleOut[kp];}

System.out.println(" \n \n Печать распределения людей Time="+time);

// DecimalFormat pip = new DecimalFormat("#.00");

num_people=0; // распределение людей по расчетной области

double pOut=0;

for (int i=1; i<Nx-1; i++) {System.out.println();

for (int j=1; j<Ny-1; j++) {

if (array[i][j]>=0) {number_elem=array[i][j]; people= al.get(number_elem).d_elem; //*hx*hy;

num_people=num_people+people*hx*hy; System.out.print(pip.format(people) +" ");}

else System.out.print(" "); }};

System.out.println("\n Number people "+pip.format(num_people) +" ");

for (int kp=0; kp<n_Out; kp++) // Выходы из расчетной области (здания)

{ pOut=pOut+ peopleOut[kp];

System.out.println(" Number people in out ("+kp+")= "+pip.format(peopleOut[kp])); };

double balance=pOut+ num_people;

System.out.println("\n Common number of people on out "+pip.format(pOut) +

"\n Balance N(in)+N(out) = "+pip.format(balance));

} // do Главный цикл по выходу всех людей из здания */

// while ((nn - peopleTotal)>0);

} }

/*

//оПРЕДЕЛЕНИЕ dmax

elem elemdd =new elem(100,0, 0,0,0,0,0,0);

double vElem, dvElem, dMax, ffElem, ffElemOld, ffMin, ddd, d1, ddp=0.005; // dvMax,

double qmax[]={16.5, 16.5, 19.6, 16.0, 11.0, 19.6}; // м/мин

double dmax[] = new double [10];

int priz=0;

for (int el=0; el<qmax.length; el++ )

{ ffMin=1.0e+5; dMax=0; ffElemOld=0;

ddd=zdan1.dElemMax*0.9;

do

{ elemdd.d_elem = ddd=ddd-ddp/elemS; if ( (el == 2) | (el == 5) ) { elemdd.type_elem = 2; vElem=elemdd.velem(1.0);}

else { elemdd.type_elem = 0; vElem=elemdd.velem();}

dvElem= ddd*vElem; ffElem = dvElem - qmax[el]/(zdan1.fp) ;

if (ffElem*ffElemOld < 0) { priz=0; dMax=ddd; ffMin= ffElem; break; }; ffElemOld=ffElem;

if (Math.abs(ffMin) > (d1=Math.abs(ffElem))) {priz=100; ffMin=ffElem; dMax=ddd; } }

while (ddd > 0.5);

dmax[el]=dMax;

System.out.println(" el= "+pip.format(el)+" priz= "+priz+" ffMin= "+pip.format(ffMin)+ " Dmax= "+ pip.format(dMax));

} System.out.println(Arrays.toString(dmax));

*/

// Отладка (печать)

/*

double dp=0.1;

for(int p= 1; p<30; p++) {

elemdd.d_elem = p*dp/elemS;

System.out.print("\n p= "+pip.format(p*dp)+" D= "+ pip.format(elemdd.d_elem)+

" V= "+ pip.format(elemdd.velem())+

" VD "+ pip.format(elemdd.velem()*elemdd.d_elem)+" dmax= "+ pip.format(elemdd.dmax())); } */

/*

//if (dvElem > dvMax) {dvMax = dvElem; dMax=ddd; }};

*/

//dmaxtt=qmax[el]/(zdan1.fp*vtt);

// if (dmaxtt > dmaxttx) {dmaxttx=dmaxtt; vttx=vtt; dmax[el]= dmaxttx ;

/*if ( (el == 0) | (el == 4) )

System.out.print("\n ff= "+pip.format(ffElem)+ " D= "+ pip.format(ddd)+ " V= "+ pip.format(vElem)+

" VD= "+ pip.format(dvElem) + " ffMin= "+pip.format(ffMin)+ " Dmax= "+ pip.format(dMax) );

версия от 27.04. 2012

{ switch(direct) {

case -1: // Поток по направлению -х

{ if ((k_near=elemxx.xincrease) >=0) // сосед +x в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка справа от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == direct ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!453! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qmax_near=elemk_near.dmax(elemL); qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { qmax_near=elemk_near.dmax(); elemL=hy; qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS;

} } } } }; break;

case 1: // Поток по направлению х

{ if ((k_near=elemxx.xreduction) >=0) // сосед -x в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -x от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == direct ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!466! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qmax_near=elemk_near.dmax(elemL); qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { qmax_near=elemk_near.dmax(); elemL = hy; qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS;

} } } } }; break;

case -2: // Поток по направлению -y

{ if ((k_near=elemxx.yincrease) >=0) // сосед +y в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка справа от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == direct ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!482! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qmax_near=elemk_near.dmax(elemL); qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { qmax_near=elemk_near.dmax(); elemL =hx; qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS;

} } } } }; break;

case 2: // Поток по направлению y

{ if ((k_near=elemxx.yreduction) >=0) // сосед -y в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -y от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if(elemk_near.direct_elem == direct ) { if (elemk_near.d_elem >0)

{ if (elemk_near.type_elem == 5) System.out.println("\n!498! Mistake!!elemk_near.type_elem == 5 ");

nk_near=elemk_near.d_elem*elemS;

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

elemL=al_Door.get(num_Door).l; qmax_near=elemk_near.dmax(elemL); qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem(elemL)*elemk_near.d_elem;}

else { qmax_near=elemk_near.dmax(); elemL = hx; qin=0;

if (elemxx.d_elem <= qmax_near) qin = elemk_near.velem()*elemk_near.d_elem;}

ntran =elemL*qin*tay; if (ntran > nk_near) ntran = nk_near;

elemxx.d_elem = elemxx.d_elem + ntran/elemS;

elemk_near.d_elem = elemk_near.d_elem - ntran/elemS;

} } } } }; break; }; // swicth */

/*

elem elemdd =new elem(100,0, 0,0,0,0,0,0);

for(int p= 1; p<30; p++) {

double elemSS=1;

elemdd.d_elem = p/elemSS;

System.out.print("\n p= "+p+" D= "+ pip.format(elemdd.d_elem)+

" V= "+ pip.format(elemdd.velem())+" dmax= "+ pip.format(elemdd.dmax())); } */

/*

for (int i=1; i<Nx-1; i++)

for (int j=1; j<Ny-1; j++)

if (array[i][j]>=0) {number_elem=array[i][j]; al.get(number_elem).d_elem= al.get(number_elem).d_new;};

*/

/* // ******

if ((direct == 1) | (direct == -1)) {

{qplus2=0;

if ((k_near=elemxx.yincrease) >=0) // сосед + в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка +y от соседа

if(elemk_near.outelem == kk) { // ячейка соседняя относится к выходу kk

if( (elemk_near.d_elem > 0) & (elemk_near.direct_elem == -2) )

{if (elemk_near.type_elem == 5) System.out.println("\n!(439)!! Mist-2!!elemk_near.type_elem == 5 ");

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

double ll=al_Door.get(num_Door).l;

if (elemxx.d_elem <= elemk_near.dmax(ll)) qplus2=elemk_near.velem(ll)*elemk_near.d_elem;} // 2

else { if (elemxx.d_elem <=elemk_near.dmax()) qplus2=elemk_near.velem()*elemk_near.d_elem;} } } } };

{qmin2=0;

if ((k_near=elemxx.yreduction) >=0) // сосед - в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -y от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

if( (elemk_near.d_elem > 0) & (elemk_near.direct_elem == 2) )

{if (elemk_near.type_elem == 5) System.out.println("\n!(449)!! Mist-2!!elemk_near.type_elem == 5 ");

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

double ll=al_Door.get(num_Door).l;

if (elemxx.d_elem <= elemk_near.dmax(ll)) qmin2=elemk_near.velem(ll)*elemk_near.d_elem;} // 2

else { if (elemxx.d_elem <=elemk_near.dmax()) qmin2=elemk_near.velem()*elemk_near.d_elem;} } } };

dqy= (qplus2+qmin2)/hy; }; //((direct == 1) | (direct == -1))

if ((direct == 2) | (direct == -2)) {

{qplus1=0;

if ((k_near=elemxx.xincrease) >=0) // сосед + в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка +x от соседа

if(elemk_near.outelem == kk) { // ячейка соседняя относится к выходу kk

if( (elemk_near.d_elem > 0) & (elemk_near.direct_elem == -1) )

{if (elemk_near.type_elem == 5) System.out.println("\n!(461)!! Mist-2!!elemk_near.type_elem == 5 ");

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

double ll=al_Door.get(num_Door).l;

if (elemxx.d_elem <= elemk_near.dmax(ll)) qplus1=elemk_near.velem(ll)*elemk_near.d_elem;} // 2

else { if (elemxx.d_elem <=elemk_near.dmax()) qplus1=elemk_near.velem()*elemk_near.d_elem;} } } } };

{qmin1=0;

if ((k_near=elemxx.xreduction) >=0) // сосед - в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -x от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

if( (elemk_near.d_elem > 0) & (elemk_near.direct_elem == 1) )

{if (elemk_near.type_elem == 5) System.out.println("\n!(471)!! Mist-2!!elemk_near.type_elem == 5 ");

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

double ll=al_Door.get(num_Door).l;

if (elemxx.d_elem <= elemk_near.dmax(ll)) qmin1=elemk_near.velem(ll)*elemk_near.d_elem;} // 2

else { if (elemxx.d_elem <=elemk_near.dmax()) qmin1=elemk_near.velem()*elemk_near.d_elem;} } } };

dqx= (qplus1+qmin1)/hx; };

//***

*

*/

/* else {qmin1=0;

if ((k_near=elemxx.xreduction) >=0) // сосед слева в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка слева от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if (elemxx.d_elem >0) {

if (elemxx.type_elem == 2){ int num_Door = elemxx.number_Door;

double ll=al_Door.get(num_Door).l;

if (elemk_near.d_elem <= elemxx.dmax(ll)) qmin1=elemxx.velem(ll)*elemxx.d_elem;} // 2

else { if (elemk_near.d_elem <= elemxx.dmax()) qmin1=elemxx.velem()*elemxx.d_elem;} }

} else System.out.println(" !484! elemk_near.outelem != kk "+elemk_near.outelem + " kk "+ kk);

} else System.out.println(" !485! k_near=elemxx.xreduction !>=0 "+k_near); };

*/

/* dvx=-(vplus1-vmin1)/hx;

{vplus2=0;

if ((k_near=elemxx.yincrease) >=0) // сосед + в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка +y от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if (elemk_near.type_elem == 5) System.out.println("\n!!! Mist-2!!elemk_near.type_elem == 5 ");

if (elemk_near.d_elem <= elemxx.dmax()) vplus1= elemxx.velem();}

} };

{vmin2=0;

if ((k_near=elemxx.yreduction) >=0) // сосед - в расчетной области (номер ячейки)

{elemk_near = al.get(k_near); // ячейка -y от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ if (elemk_near.type_elem == 5) System.out.println("\n!!! Mist-3!!elemk_near.type_elem == 5 ");

if (elemxx.d_elem <= elemk_near.dmax()) vmin1= elemk_near.velem();}

} };

dvy= (vplus2-vmin2)/hy;

{ qmax_near=elemk_near.dmax();

if (qmax_near <= elemxx.dmax()) vplus2= elemxx.velem(); }}};

iuyruyrfuff

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

double ll=al_Door.get(num_Door).l; qmax_near=elemk_near.dmax(ll);

if (elemxx.d_elem <= qmax_near) vplus1= -elemk_near.velem(ll);}

else { qmax_near=elemk_near.dmax();

if (elemxx.d_elem <= qmax_near) vplus1= -elemk_near.velem();}

}}};

} };

vmin1=0; // Скорость входа по направлению -1

if ((k_near=elemxx.xincrease) >=0) // сосед справа в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка справа от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_near=elemk_near.dmax(); // максимальная плотность потока в соседней ячейке

if (elemxx.d_elem <= qmax_near) vmin1=elemk_near.velem(); } };

dvx= (vplus1-vmin1)/hx;

vmin2 = vplus2 =0;

if ((k_near=elemxx.yreduction) >=0) // сосед снизу в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка снизу от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_near=elemk_near.dmax(); // максимальная плотность потока в соседней ячейке

if (elemxx.d_elem <= qmax_near) vmin2=elemk_near.velem(); } };

if ((k_near=elemxx.yincrease) >=0) // сосед сверху в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка сверху от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_0=elemxx.dmax(); // максимальная плотность потока в ij ячейке

if (elemk_near.d_elem <= qmax_0) vplus2=elemxx.velem(); } };

dvy= (vplus2-vmin2)/hy; divv=dvx+dvy; break;

kjhgf

case 1: vplus1=elemxx.velem(outL[kk]); // Скорость выхода по направлению 1; ось х направлена по направлению 1, ось y по направлению +2

vmin1=0; // Скорость входа по направлению 1

if ((k_near=elemxx.xreduction) >=0) // сосед слева в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка слева от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_near=elemk_near.dmax(); // максимальная плотность потока в соседней ячейке

if (elemxx.d_elem <= qmax_near) vmin1=elemk_near.velem(); } };

dvx= (vplus1-vmin1)/hx;

vmin2 = vplus2 =0;

if ((k_near=elemxx.yreduction) >=0) // сосед снизу в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка снизу от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_near=elemk_near.dmax(); // максимальная плотность потока в соседней ячейке

if (elemxx.d_elem <= qmax_near) vmin2=elemk_near.velem(); } };

if ((k_near=elemxx.yincrease) >=0) // сосед сверху в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка сверху от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_0=elemxx.dmax(); // максимальная плотность потока в ij ячейке

if (elemk_near.d_elem <= qmax_0) vplus2=elemxx.velem(); } };

dvy= (vplus2-vmin2)/hy;

divv=dvx+dvy; break;

}

{ qmax_near=elemk_near.dmax(); // максимальная плотность потока в соседней ячейке

if (elemxx.d_elem <= qmax_near) vplus1=elemk_near.velem(); } };

break;

case 1: vplus1=elemxx.velem(outL[kk]); // Скорость выхода по направлению 1

vplus1=0; // Скорость входа по направлению 1

if ((k_near=elemxx.xincrease) >=0) // сосед справа в расчетной области (номер ячейки)

{ elemk_near = al.get(k_near); // ячейка справа от соседа

if(elemk_near.outelem == kk) // ячейка соседняя относится к выходу kk

{ qmax_near=elemk_near.dmax(); // максимальная плотность потока в соседней ячейке

if (elemxx.d_elem <= qmax_near) vplus1=elemk_near.velem(); } }; break;

}

}

k_kd = elemk_near.outelem; // предписание выхода для соседа справа

if (k_kd != kk) // сосед подлежит обработке

element =(elem) itrOut_kk.next(); // следующий элемент списка выхода kk

}

while (itrOut_kk.hasNext()) ; // do {}

hxyz=0.5*hx; direct_elem=-1; break;

case 1: hxyz=0.5*hx; direct_elem=1; break;

case -2: hxyz=0.5*hy; direct_elem=-2; break;

case 2: hxyz=0.5*hy; direct_elem=2; break;

// case -3: case 3: hxyz= hxyz=0.5*hz; direct_elem=3; break;

default: {hxyz=-1000; direct_elem=-1000;}; } // ошибка

*/

/*

if (elemk_near.type_elem == 2){ int num_Door = elemk_near.number_Door;

double ll=al_Door.get(num_Door).l; qmax_near=elemk_near.dmax(ll);

if (elemxx.d_elem <= qmax_near) vplus1= elemk_near.velem(ll);}

else

/*

777 if (elemk_near.d_elem <= elemxx.dmax())

{ if (elemxx.type_elem == 2) { int num_Door = elemxx.number_Door;

double ll=al_Door.get(num_Door).l;

vmin1=-elemxx.velem(ll);} else vmin1=-elemxx.velem();

}; } else System.out.println(" !!! elemk_near.outelem != kk "+elemk_near.outelem + " kk "+ kk);

} else System.out.println(" !!! k_near=elemxx.xreduction) < 0"+k_near + " kk "+ kk);

};

// System.out.println("\n klist "+klist); // выходные потоки

/* System.out.println("\n klist "+klist);

for (int i=1; i<Nx-1; i++) {System.out.println();

for (int j=1; j<Ny-1; j++) {

if (array[i][j]>=0) {number_elem=array[i][j]; System.out.print(al.get(number_elem).outelem+" ");} }};*/

// ArrayList<ArrayList<Double>> ddd = new ArrayList<ArrayList<Double>>();// Списки плотности на выход (n_out);

// for (int ii = 0; ii < n_Out; ii++) ddd.add(new ArrayList<Double>());

import java.text.DecimalFormat;

public class elem { // 14.05.2012

// Характеристики элемента (неизменяемые)

int number; // номер элемента

int type_elem; // тип ячейки по наклону и наличию выхода

// type_elem = 0 - горизонтальный путь в здании type_elem = 1 - гор. путь вне здания

// type_elem = 2 - дверной проем в расчетной области

// type_elem = 3 - лестница вниз type_elem = 4 - - лестница вверх

// type_elem = 5 - выход из расчетной области (например, из здания)

int xreduction; // номер элемента - левый (уменьшение по х)

int xincrease; // номер элемента - правый (увеличение по х)

int yreduction; // номер элемента - нижний (уменьшение по у)

int yincrease; // номер элемента - верхний (увеличение по у)

double powerSourse; // мощность источника в ячейке, человек/минуту

int number_Door; // номер (индекс) двери в расчетной области

// Характеристики элемента (изменяемые)

int outelem; // признак выхода - связь с выходом номера k.

// при k=-1, т.е. <0 - номер выхода пока не определен

int direct_elem; // направление прохода по ячейке: 1 по х; 2 по у; 3 по z (0 - е определено)

double time_outelem;// время достижения выхода k из элемента numder, минут

double d_elem; // плотность в элементе, человек/м2

double d_max; // максимальная плотность в элементе, человек/м2

elem(int number, int type_elem, int xreduction, int xincrease,

int yreduction, int yincrease,

double powerSourse,

int outelem ) {

this.number=number;

this.type_elem=type_elem; // тип ячейки по наклону и наличию выхода

this.xreduction =xreduction; // номер элемента - левый

this.xincrease =xincrease; // номер элемента - правый

this.yreduction =yreduction; // номер элемента - нижний

this.yincrease =yincrease; // номер элемента - верхний

this.powerSourse=powerSourse; // мощность источника 0- нет источника

this.outelem=outelem; // признак выхода - связь с выходом k.

// при k=-1, т.е. <0 - номер выхода пока не определен

}

double velem( ){ // Скорость м/мин

// type_elem = 0 - горизонтальный путь в здании type_elem = 1 - гор. путь вне здания

// type_elem = 2 - дверной проем в расчетной области

// type_elem = 3 - лестница вниз type_elem = 4 - - лестница вверх

// type_elem = 5 - выход из расчетной области (например, из здания)

double v0[]={100,100,100,80,50,100}; // м/мин

double d0[]={0.51, 0.7, 0.65, 0.89, 0.67, 0.65};

double a[] = {0.295, 0.407, 0.295, 0.4, 0.305, 0.295};

double v0k=0;

if(d_elem < d0[type_elem]) { v0k=v0[type_elem]; return v0k; }

else {

if (d_elem < zdan1.dElemMax )

{ v0k=v0[type_elem]*(1.0-a[type_elem]*Math.log(d_elem/d0[type_elem])); return v0k; }

else { v0k=zdan1.vMin; return v0k; } }

}

double velem(double l ){ // Скорость м/мин

// l - ширина проема, метр

// type_elem = 0 - горизонтальный путь в здании type_elem = 1 - гор. путь вне здания

// type_elem = 2 - дверной проем в расчетной области

// type_elem = 3 - лестница вниз type_elem = 4 - - лестница вверх

// type_elem = 5 - выход из расчетной области (например, из здания)

double v0[]={100,100,100,80,50,100}; // м/мин

// double sigma[]={5,5,5,5,5,5};

double d0[]={0.51, 0.7, 0.65, 0.89, 0.67, 0.65};

double a[] = {0.295, 0.407, 0.295, 0.4, 0.305, 0.295};

double m, v0k=0;

boolean tt = ((type_elem == 2) | (type_elem == 5));

if ( tt) {

if(d_elem <= d0[type_elem]) v0k= v0[type_elem];

if((d_elem > d0[type_elem]) & (d_elem < 5.0 ))

v0k = v0[type_elem]*(1.0-a[type_elem]*Math.log(d_elem/d0[type_elem]));

if((d_elem >= 5) & (d_elem < 9.0 )) { m=1.25-0.05*d_elem;

v0k = v0[type_elem]*(1.0-a[type_elem]*Math.log(d_elem/d0[type_elem]))*m; }

if((d_elem >= 9) & (d_elem < zdan1.dElemMax ) ) v0k=10*(3.75+2.5*l)/d_elem;

if(d_elem >= zdan1.dElemMax ) v0k = zdan1.vMin;}

else System.out.println("!!!!elem-81 type_elem (velem(l)= "+ type_elem );

return v0k; }

double dmax( ){ // максимально-допустимая плотность, чел/м2

// type_elem = 0 - горизонтальный путь в здании type_elem = 1 - гор. путь вне здания

// type_elem = 2 - дверной проем в расчетной области

// type_elem = 3 - лестница вниз type_elem = 4 - - лестница вверх

// type_elem = 5 - выход из расчетной области (например, из здания)

double qmax[]={16.5, 16.5, 19.6, 16.0, 11.0, 19.6}; // м/мин

// double v_i = velem();

double q_i;

if (d_elem < zdan1.dElemMax ) { q_i = qmax[type_elem]/(zdan1.fp*velem());

if (q_i > zdan1.dElemMax ) q_i = zdan1.dElemMax; } else q_i = zdan1.dElemMax;

return q_i; }

double dmax(double l ){ // максимально-допустимая плотность, чел/м2

// l - ширина проема, метр

// type_elem = 0 - горизонтальный путь в здании type_elem = 1 - гор. путь вне здания

// type_elem = 2 - дверной проем в расчетной области

// type_elem = 3 - лестница вниз type_elem = 4 - - лестница вверх

// type_elem = 5 - выход из расчетной области (например, из здания)

// if ((type_elem != 2) & (type_elem != 5)) System.out.println("!!!! Mistake type_elem != 2,5 (dmax(l)) = "+ type_elem );

double qmax[]={16.5, 16.5, 19.6, 16.0, 11.0, 19.6}; // м/мин

double v_i =0,q_i=0;

boolean tt = ((type_elem == 2) | (type_elem == 5));

if (tt) { if (d_elem < zdan1.dElemMax ) {v_i = velem(l); q_i = (qmax[type_elem]/zdan1.fp)/v_i;

if (q_i > zdan1.dElemMax ) q_i = zdan1.dElemMax; } else q_i = zdan1.dElemMax; }

else System.out.println("!107! Mistake type_elem (dmax(l) )= "+ type_elem );

return q_i; }

void printelem(){

DecimalFormat prpr = new DecimalFormat("#0.00");

DecimalFormat prpr1 = new DecimalFormat("#0.0000");

System.out.println(" \n number "+number+" Type "+ type_elem); // номер элемента

System.out.println(" левый центр правый "+ xreduction+" "+number+" "+xincrease);

System.out.println(" нижний центр верхний "+ yreduction+" "+number+" "+yincrease);

// System.out.println("xreduction "+xreduction); // левый (уменьшение по х)

// System.out.println("xincrease "+xincrease); // правый (увеличение по х)

// System.out.println("yreduction "+yreduction); // нижний (уменьшение по y)

// System.out.println("yincrease "+yincrease); // верхний (увеличение по y)

System.out.println("powerSourse "+powerSourse);// мощность источника в ячейке, чел./минуту

System.out.println("outelem "+outelem + // признак выхода =-k связь с выходом k.

" время достижения выхода outelem "+ prpr1.format(time_outelem)); //, минуты

System.out.println("direct_elem "+prpr.format(direct_elem)); // направление прохода по ячейке

System.out.println("d_elem "+prpr.format(d_elem) // плотность в элементе, человек/м2

+" скорость на плоскости "+prpr.format(velem()));

}

}

/*

}

if((d_elem>d0[type_elem]) & (d_elem <) {

v0k=v0[type_elem]*(1.0-a[type_elem]*Math.log(d_elem/d0[type_elem]));

// if (v0k > v_max) v0k=v_max;

if (v0k <= 0) v0k=10.0;}

else v0k=v0[type_elem];

return v0k ; }*/

/* double qmax[]={16.5, 16.5, 19.6, 16.0, 11.0, 19.6}; // м/мин

* dElmax, v_max;

dElmax = (qmax[type_elem]/zdan1.fp); v_max=dElmax/d_elem;

if(d_elem >= 5) m=1.25-0.05*d_elem; else m=1;

m=1;

if (d_elem>d0[type_elem])

v0k=v0[type_elem]*(1.0-a[type_elem]*Math.log(d_elem/d0[type_elem]))*m;

else v0k=v0[type_elem];

if ((d_elem>=9) & (tt ) ) v0k=10*(3.75+2.5*l)/d_elem;

*/

import java.text.DecimalFormat;

//import java.util.Arrays;

public class doorElem { // класс дверей 14.05.2012

int numElem; // номер элемента с дверью

int elem_type; // тип ячейки, где расположена дверь ( 2 или 5 )

int type_door; // тип двери, (пока не используется)

int direct_elem; // направление движения через дверь

double l; // ширина проема в двери, м

//double dMax; // максимальная плотность, м/мин

// elem elemDoor;

doorElem( int numElem, int elem_type, int direct_elem, double l ) { //, double elemS ) {

this.numElem=numElem;

this.elem_type = elem_type;

this.direct_elem = direct_elem;

this.l=l;

}

double dmax(double l, double hx, double hy ){ // максимально-допустимая плотность, чел/м2

// l - ширина проема, метр

// type_elem = 2 - дверной проем в расчетной области

// type_elem = 5 - выход из расчетной области (например, из здания)

double qmax[]={16.5, 16.5, 19.6, 16.0, 11.0, 19.6}; // м/мин

double vElem, dvElem, ffElem, ddd, ddp=0.005; // dvMax,

int priz=0;

int el=2;

double ffMin=1.0e+5, dMax=0, ffElemOld=0, elemS=hx*hy;

ddd=zdan1.dElemMax*0.99;

elem elemdd =new elem(100,2, 0,0,0,0,0,0);

do

{ elemdd.d_elem = ddd=ddd-ddp/elemS;

vElem=elemdd.velem(l);

if (ddd >= 9) dvElem=10*(3.75+2.5*l); else dvElem= ddd*vElem;

ffElem = dvElem - qmax[el]/(zdan1.fp) ;

if (ffElem*ffElemOld < 0) { priz=0; dMax=ddd; ffMin= ffElem; break; }; ffElemOld=ffElem;

if (Math.abs(ffMin) > (Math.abs(ffElem))) {priz=100; ffMin=ffElem; dMax=ddd; } }

while (ddd > 0.5);

System.out.println(" el= 2 "+" priz= "+priz+" ffMin= "+ffMin+ " Dmax= "+ dMax);

return dMax; }

void printdoor (){

DecimalFormat prpr = new DecimalFormat("#0.00");

System.out.println(" \n Дверь :numElem "+numElem+" elem_type "+elem_type+" direct_elem "+direct_elem+

" Ширина проема "+ prpr.format(l) ); //+" Мак. плотность "+ prpr.format(dMax));

}

}

/*};

double v_i =0,q_i=0;

boolean tt = ((type_elem == 2) | (type_elem == 5));

if (tt) { if (d_elem < zdan1.dElemMax ) {v_i = velem(l); q_i = (qmax[type_elem]/zdan1.fp)/v_i;

if (q_i > zdan1.dElemMax ) q_i = zdan1.dElemMax; } else q_i = zdan1.dElemMax; }

else System.out.println("!107! Mistake type_elem (dmax(l) )= "+ type_elem );

return q_i; }

*/

/*

//double dmax;

elem elemdd =new elem(100,0, 0,0,0,0,0,0);

double vElem, dvElem, dMax_x, ffElem, ffElemOld, ffMin, ddd, d1, ddp=0.005; // dvMax,

double qmax[]={16.5, 16.5, 19.6, 16.0, 11.0, 19.6}; // м/мин

int priz=0;

int el=2;

ffMin=1.0e+5; dMax=0; ffElemOld=0;

ddd=zdan1.dElemMax*0.9;

do

{ elemdd.d_elem = ddd=ddd-ddp/elemS;

if ( (elem_type == 2) | (elem_type == 5) ) { elemdd.type_elem = 2; vElem=elemdd.velem(l);}

else { elemdd.type_elem = 0; vElem=elemdd.velem();}

dvElem= ddd*vElem; ffElem = dvElem - qmax[el]/(zdan1.fp) ;

if (ffElem*ffElemOld < 0) { priz=0; dMax=ddd; ffMin= ffElem; break; }; ffElemOld=ffElem;

if (Math.abs(ffMin) > (d1=Math.abs(ffElem))) {priz=100; ffMin=ffElem; dMax=ddd; } }

while (ddd > 0.5);

// System.out.println(" el= 2 "+" priz= "+priz+" ffMin= "+ffMin+ " Dmax= "+ dMax);

this.dMax = dMax;

}; */

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]