AnyType MatrixUpWind3::operator()(Stack stack) const { Matrice_Creuse<R> * sparce_mat =GetAny<Matrice_Creuse<R>* >((*emat)(stack)); MatriceMorse<R> * amorse =0; MeshPoint *mp(MeshPointStack(stack)) , mps=*mp; Mesh3 * pTh = GetAny<pmesh3>((*expTh)(stack)); ffassert(pTh); Mesh3 & Th (*pTh); { map< pair<int,int>, R> Aij; KN<double> cc(Th.nv); double infini=DBL_MAX; cc=infini; for (int it=0;it<Th.nt;it++) for (int iv=0;iv<4;iv++) { int i=Th(it,iv); if ( cc[i]==infini) { // if nuset the set mp->setP(&Th,it,iv); cc[i]=GetAny<double>((*expc)(stack)); } } for (int k=0;k<Th.nt;k++) { const Mesh3::Element & K(Th[k]); const Mesh3::Vertex & A(K[0]), &B(K[1]),&C(K[2]),&D(K[3]); R3 Pt(1./4.,1./4.,1./4.); R3 U; MeshPointStack(stack)->set(Th,K(Pt),Pt,K,K.lab); U.x = GetAny< R>( (*expu1)(stack) ) ; U.y = GetAny< R>( (*expu2)(stack) ) ; U.z = GetAny< R>( (*expu3)(stack) ) ; int ii[4] ={ Th(A), Th(B),Th(C),Th(D)};// number of 4 vertex double c[4]={cc[ii[0]],cc[ii[1]],cc[ii[2]],cc[ii[3]]}; double a[4][4]; if (Marco(K,U,c,a) ) { for (int i=0;i<4;i++) for (int j=0;j<4;j++) if (fabs(a[i][j]) >= 1e-30) Aij[make_pair(ii[i],ii[j])]+=a[i][j]; } } amorse= new MatriceMorse<R>(Th.nv,Th.nv,Aij,false); } sparce_mat->Uh=UniqueffId(); sparce_mat->Vh=UniqueffId(); sparce_mat->A.master(amorse); sparce_mat->typemat=(amorse->n == amorse->m) ? TypeSolveMat(TypeSolveMat::GMRES) : TypeSolveMat(TypeSolveMat::NONESQUARE); // none square matrice (morse) *mp=mps; if(verbosity>3) { cout << " End Build MatrixUpWind : " << endl;} return sparce_mat; }
CampusEscena::CampusEscena() { onTimerTick = gcnew EventHandler(this, &CampusEscena::timerTick); onKeyDown = gcnew KeyEventHandler(this, &CampusEscena::teclaDown); onKeyUp = gcnew KeyEventHandler(this, &CampusEscena::teclaUp); onMouseClick = gcnew MouseEventHandler(this, &CampusEscena::mouseClick); Mapas::plazuela_mapa = gcnew PlazuelaMapa(); Mapas::pabellonA_mapa = gcnew PabellonAMapa(); Mapas::pabellonB_mapa = gcnew PabellonBMapa(); Mapas::sotano_mapa = gcnew SotanoMapa(); Mapas::jardin_mapa = gcnew JardinMapa(); Mapa::mapa_actual = Mapas::plazuela_mapa; Marco::marco = gcnew Marco(gcnew Posicion(9, 9, true)); PROFESORES::Profesor1 = gcnew Profesor(1, Mapas::plazuela_mapa, gcnew Posicion(16, 3, true)); PROFESORES::Profesor2 = gcnew Profesor(3, Mapas::pabellonB_mapa, gcnew Posicion(16, 11, true)); PROFESORES::Profesor3 = gcnew Profesor(5, Mapas::sotano_mapa, gcnew Posicion(16, 6, true)); PROFESORES::Profesor4 = gcnew Profesor(7, Mapas::jardin_mapa, gcnew Posicion(11, 4, true)); PROFESORES::Profesor5 = gcnew Profesor(9, Mapas::pabellonA_mapa, gcnew Posicion(2, 10, true)); }