void AlmacenaToComsol_1::aplicar(Malla *malla, string filename){ //Lineas necesarias para que scanf lea archivo en computadores seteados en otro lenguaje. setlocale(LC_NUMERIC, "POSIX"); FILE *archivo_x = fopen(filename.c_str(),"w"); char separador1[32] = "% Coordinates\n"; fprintf(archivo_x,"%s",separador1); Nodos *nds = malla->getNodos(); Caras *crs = malla->getCaras(); Nodo *nodo; int* nuevoIndiceNodos=new int[nds->getNumNodos()]; int nlinea=0; for(int i=0; i<nds->getNumNodos(); i++) { nodo = nds->getNodo(i); if(nodo != NULL) { fprintf(archivo_x,"%f %f %f\n",nodo->getPunto()->getX(),nodo->getPunto()->getY(),nodo->getPunto()->getZ()); nuevoIndiceNodos[i]=nlinea; nlinea++; } } char separador2[32] = "% Elements (triangular)\n"; fprintf(archivo_x,"%s",separador2); Cara *c; vector<int> ind_nodos; for(int i=0; i<crs->getNumCaras(); i++) { c = crs->getCara(i); if(c != 0) { ind_nodos = c->getNodos(); //Nota: Se invierte el orden de insercion de los puntos, para que las normales queden seteadas correctamente. //ya que en el archivo cms_1 los nodos estan al reves, dejando las normales hacia adentro. fprintf(archivo_x,"%d %d %d\n",nuevoIndiceNodos[ind_nodos[2]]+1,nuevoIndiceNodos[ind_nodos[1]]+1,nuevoIndiceNodos[ind_nodos[0]]+1); } } delete nuevoIndiceNodos; fclose(archivo_x); setlocale(LC_NUMERIC, ""); }
void AlmacenaToXYZU::aplicar(Malla *malla, string filename){ //Lineas necesarias para que scanf lea archivo en computadores seteados en otro lenguaje. setlocale(LC_NUMERIC, "POSIX"); int posextension=filename.rfind("."); string nombrefile=filename.substr(0,posextension); string extension=filename.substr(posextension+1,filename.length()); if (posextension==0){ nombrefile=filename; extension="txt"; } stringstream archivox; stringstream archivoy; stringstream archivoz; stringstream archivou; archivox << nombrefile << "_nx." << extension; archivoy << nombrefile << "_ny." << extension; archivoz << nombrefile << "_nz." << extension; archivou << nombrefile << "_u." << extension; FILE *archivo_x = fopen(archivox.str().c_str(),"w"); FILE *archivo_y = fopen(archivoy.str().c_str(),"w"); FILE *archivo_z = fopen(archivoz.str().c_str(),"w"); FILE *archivo_u = fopen(archivou.str().c_str(),"w"); char separador1[32] = "% Coordinates\n"; fprintf(archivo_x,"%s",separador1); fprintf(archivo_y,"%s",separador1); fprintf(archivo_z,"%s",separador1); fprintf(archivo_u,"%s",separador1); Nodos *nds = malla->getNodos(); Caras *crs = malla->getCaras(); Nodo *nodo; int* nuevoIndiceNodos=new int[nds->getNumNodos()]; int nlinea=0; for(int i=0; i<nds->getNumNodos(); i++) { nodo = nds->getNodo(i); if(nodo != NULL) { fprintf(archivo_x,"%f %f %f\n",nodo->getPunto()->getX(),nodo->getPunto()->getY(),nodo->getPunto()->getZ()); fprintf(archivo_y,"%f %f %f\n",nodo->getPunto()->getX(),nodo->getPunto()->getY(),nodo->getPunto()->getZ()); fprintf(archivo_z,"%f %f %f\n",nodo->getPunto()->getX(),nodo->getPunto()->getY(),nodo->getPunto()->getZ()); fprintf(archivo_u,"%f %f %f\n",nodo->getPunto()->getX(),nodo->getPunto()->getY(),nodo->getPunto()->getZ()); nuevoIndiceNodos[i]=nlinea; nlinea++; } } char separador2[32] = "% Elements (triangular)\n"; fprintf(archivo_x,"%s",separador2); fprintf(archivo_y,"%s",separador2); fprintf(archivo_z,"%s",separador2); fprintf(archivo_u,"%s",separador2); Cara *c; vector<int> ind_nodos; for(int i=0; i<crs->getNumCaras(); i++) { c = crs->getCara(i); if(c != 0) { ind_nodos = c->getNodos(); fprintf(archivo_x,"%d %d %d\n",nuevoIndiceNodos[ind_nodos[0]]+1,nuevoIndiceNodos[ind_nodos[1]]+1,nuevoIndiceNodos[ind_nodos[2]]+1); fprintf(archivo_y,"%d %d %d\n",nuevoIndiceNodos[ind_nodos[0]]+1,nuevoIndiceNodos[ind_nodos[1]]+1,nuevoIndiceNodos[ind_nodos[2]]+1); fprintf(archivo_z,"%d %d %d\n",nuevoIndiceNodos[ind_nodos[0]]+1,nuevoIndiceNodos[ind_nodos[1]]+1,nuevoIndiceNodos[ind_nodos[2]]+1); fprintf(archivo_u,"%d %d %d\n",nuevoIndiceNodos[ind_nodos[0]]+1,nuevoIndiceNodos[ind_nodos[1]]+1,nuevoIndiceNodos[ind_nodos[2]]+1); } } char separador_x[32] = "% Data (nx)\n"; char separador_y[32] = "% Data (ny)\n"; char separador_z[32] = "% Data (nz)\n"; char separador_u[32] = "% Data (u)\n"; fprintf(archivo_x,"%s",separador_x); fprintf(archivo_y,"%s",separador_y); fprintf(archivo_z,"%s",separador_z); fprintf(archivo_u,"%s",separador_u); for(int i=0; i<nds->getNumNodos(); i++) { nodo = nds->getNodo(i); // cout << nodo->imprimir() << endl; if(nodo != NULL) { fprintf(archivo_x,"%f\n",nodo->getNormal()->getPunto().getX()); fprintf(archivo_y,"%f\n",nodo->getNormal()->getPunto().getY()); fprintf(archivo_z,"%f\n",nodo->getNormal()->getPunto().getZ()); fprintf(archivo_u,"%f\n",nodo->getConcentracion()); } } delete nuevoIndiceNodos; fclose(archivo_x); fclose(archivo_y); fclose(archivo_z); fclose(archivo_u); setlocale(LC_NUMERIC, ""); }