|
Funciones | |
| int | mostrar_solucion (basicos *p_DATOS) |
| Función que se encarga de preparar los ficheros que se mostrarán por pantalla. | |
| QString | queescribo (QString escribir) |
| Función que se encarga de complementar a mostrar_solucion para escribir el tipo de elemento del que se está tomando la variable Esta función, dependiendo de que elemento, retorna un QString con el nombre del mismo para poder escribirlo en el fichero de soluciones. | |
| void | escribirgnuplot (basicos *p_DATOS) |
| Función que se encarga de crear el script que usará el GNUPlot para graficar la solución del transitorio. | |
| int | mostrar_CI (basicos *p_DATOS) |
| Función que se encarga de identificar e indicar en la interfaz que representa cada Condición Inicial que debe ser introducida al realizar un análisis transitorio. | |
| QString | script (basicos *p_DATOS) |
| Función que se abrir el script para que el usuario pueda modificarlo y adaptarlo a sus necesidades. | |
| void escribirgnuplot | ( | basicos * | p_DATOS | ) |
Función que se encarga de crear el script que usará el GNUPlot para graficar la solución del transitorio.
| Puntero | a estructura basicos |
Definición en la línea 587 del archivo estructuras.cpp.
00588 { 00589 QString dire =p_DATOS->datos_trans; 00590 fstream fich(dire, ios::in |ios::out | ios::trunc | ios::binary); 00591 char texto[100]; 00592 ifstream fichero; 00593 // Abro para lectura 00594 fichero.open("x_trans.data"); 00595 float contador=p_DATOS->t0;; 00596 if (!fichero) 00597 { 00598 cout << "No se ha podido abrir el fichero." << endl; 00599 exit(1); 00600 } 00601 fichero.get(texto,256); 00602 00603 for (int indice=0; indice<=(p_DATOS->filas()*p_DATOS->numv)+1; indice++) 00604 { 00605 fich<<texto<<" "; 00606 fichero.getline(texto,256); 00607 if(0==indice%p_DATOS->filas() && indice!=0 && indice!=p_DATOS->filas()*p_DATOS->numv) 00608 {fich<<" "<<contador<<" \n";contador=contador+p_DATOS->h;} 00609 } 00610 00611 fichero.close(); 00612 fich.close(); 00613 //Ploteando las soluciones 00614 fstream ploteo(p_DATOS->datos_script, ios::in |ios::out | ios::trunc | ios::binary); 00615 ifstream variable; 00616 variable.open("variables.data"); 00617 00618 if (!variable) 00619 { 00620 cout << "No se ha podido abrir el fichero." << endl; 00621 exit(1); 00622 } 00623 variable.getline(texto,255); 00624 int numcol=p_DATOS->filas()+1; 00625 ploteo<<"set terminal png "<<endl; 00626 QString grafica = p_DATOS->solucion; 00627 ploteo<<"set output '"<<grafica<<"'"<<endl; 00628 ploteo<<"set encoding iso_8859_1\nset grid\n"<< 00629 "set autoscale\nset key bottom right title 'Variables' box"<<endl; 00630 ploteo<<"set title 'Graficado por defecto de las soluciones del circuito'"<<endl; 00631 ploteo<<"plot "; 00632 for(int graf=numcol;graf>1;graf--) 00633 { 00634 ploteo<<"'"<<dire<<"' using "<<numcol<<":"<<numcol-graf+1<< 00635 " title '"<<texto<<"'"<<" with lines"; 00636 variable.getline(texto,255); 00637 if(numcol-graf+1!=numcol-1){ploteo<<", ";} 00638 } 00639 ploteo<<"\n"<<endl; 00640 variable.close(); 00641 ploteo.close(); 00642 QString plotear = p_DATOS->datos_script; 00643 plotear.prepend("gnuplot "); 00644 system (plotear); 00645 }
| int mostrar_CI | ( | basicos * | p_DATOS | ) |
Función que se encarga de identificar e indicar en la interfaz que representa cada Condición Inicial que debe ser introducida al realizar un análisis transitorio.
| Puntero | a estructura basicos |
Definición en la línea 647 del archivo estructuras.cpp.
00648 { 00649 PetscViewer viewer; 00650 PetscScalar DATO; 00651 PetscViewerASCIIOpen(PETSC_COMM_WORLD, "CI.data", &viewer); 00652 PetscViewerDestroy(viewer); 00653 fstream fich("CI.data", ios::in |ios::out | ios::trunc | ios::binary); 00654 for (int i=0; i<p_DATOS->nodos; i++) 00655 { 00656 fich<<"V nodo "<<i+1<<endl; 00657 } 00658 QString esA2, esEA, elemento, nodoi, nodoj, nodom, nodon; 00659 00660 for(int j=0; j<p_DATOS->elementos;j++) 00661 { 00662 esA2=p_DATOS->tableMDG->text(j,3); 00663 esEA=p_DATOS->tableMDG->text(j,2); 00664 elemento=p_DATOS->tableMDG->text(j,0); 00665 nodoi=p_DATOS->tableMN->text(j,0); 00666 nodoj=p_DATOS->tableMN->text(j,1); 00667 nodom=p_DATOS->tableMN->text(j,2); 00668 nodon=p_DATOS->tableMN->text(j,3); 00669 00670 if (esA2=="2") 00671 { 00672 if(elemento=="1") 00673 {fich<<"I Resistencia entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00674 if(elemento=="3") 00675 {fich<<"I Bobina entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00676 if(elemento=="4") 00677 {fich<<"I Fuente tension entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00678 if(elemento=="6") 00679 {fich<<"I Amplificador entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00680 if(elemento=="7") 00681 {fich<<"I Trafo entre nodos "<<nodoi<<", "<<nodoj<<endl; 00682 fich<<"I Trafo entre nodos "<<nodom<<", "<<nodon<<endl;} 00683 if(elemento=="9") 00684 {fich<<"I Fuente de V dependiente de V entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00685 if(elemento=="10") 00686 {fich<<"I Fuente de I dependiente de I entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00687 if(elemento=="11") 00688 {fich<<"I Fuente de V dependiente de I entre nodos "<<nodoi<<", "<<nodoj<<endl; 00689 fich<<"I Fuente de V dependiente de I entre nodos "<<nodom<<", "<<nodon<<endl;} 00690 if(elemento=="12") 00691 {fich<<"I Bobinas Acopladas entre nodos "<<nodoi<<", "<<nodoj<<endl; 00692 fich<<"I Bobinas Acopladas entre nodos "<<nodom<<", "<<nodon<<endl;} 00693 if(elemento=="13") 00694 {fich<<"I que recorre el Interruptor entre nodos "<<nodoi<<", "<<endl;} 00695 if(elemento=="15") 00696 {fich<<"I Cuatripolo en Z entre nodos "<<nodoi<<", "<<nodoj<<endl; 00697 fich<<"I Cuatripolo en Z entre nodos "<<nodom<<", "<<nodon<<endl;} 00698 if(elemento=="16") 00699 {fich<<"I Cuatripolo en h entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00700 if(elemento=="17") 00701 {fich<<"I Cuatripolo en r entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00702 } 00703 if (esA2=="1") 00704 { 00705 if(esEA=="1") 00706 { 00707 if(esEA=="1") 00708 { 00709 if(elemento=="0") 00710 {fich<<"Intensidad de "<<queescribo(p_DATOS->tableMDG->text(j,0))<< 00711 " entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00712 if(elemento=="2") 00713 {fich<<"Intensidad de "<<queescribo(p_DATOS->tableMDG->text(j,0))<< 00714 " entre nodos "<<nodoi<<", "<<nodoj<<endl;} 00715 if(elemento=="8") 00716 {fich<<"I de Fuente de I dependiente de V entre nodos "<<nodom<< 00717 ", "<<nodon<<endl;} 00718 } 00719 } 00720 } 00721 } 00722 }
| int mostrar_solucion | ( | basicos * | p_DATOS | ) |
Función que se encarga de preparar los ficheros que se mostrarán por pantalla.
| Puntero | a estructura basicos |
Definición en la línea 200 del archivo estructuras.cpp.
00201 { 00202 PetscViewer viewer; 00203 PetscScalar DATO; 00204 if(p_DATOS->estacionario==1) 00205 { 00206 QString dire=p_DATOS->datos_perm; 00207 PetscViewerASCIIOpen(PETSC_COMM_WORLD, dire, &viewer); 00208 PetscViewerDestroy(viewer); 00209 fstream fich(dire, ios::in |ios::out | ios::trunc | ios::binary); 00210 char texto[100]; 00211 ifstream fichero; 00212 // Abro para lectura 00213 fichero.open("x_perm.data"); 00214 if (!fichero) 00215 { 00216 cout << "No se ha podido abrir el fichero."<< endl; 00217 exit(1); 00218 } 00219 fichero.getline(texto,256); 00220 //fichero >> texto; 00221 fich<<"Resultados sistema estacionario: \n"<<endl; 00222 for (int i=0; i<p_DATOS->nodos; i++) 00223 { 00224 fich<<"Tensión en nodo "<<i+1<<": "<<texto<<endl; 00225 fichero.getline(texto,256); 00226 } 00227 QString esA2, esEA, elemento, nodoi, nodoj, nodom, nodon; 00228 00229 for(int j=0; j<p_DATOS->elementos;j++) 00230 { 00231 esA2=p_DATOS->tableMDG->text(j,3); 00232 esEA=p_DATOS->tableMDG->text(j,2); 00233 elemento=p_DATOS->tableMDG->text(j,0); 00234 nodoi=p_DATOS->tableMN->text(j,0); 00235 nodoj=p_DATOS->tableMN->text(j,1); 00236 nodom=p_DATOS->tableMN->text(j,2); 00237 nodon=p_DATOS->tableMN->text(j,3); 00238 00239 if (esA2=="2") 00240 { 00241 if(elemento=="1") 00242 {fich<<"I Resistencia entre nodos "<<nodoi<<", "<<nodoj<<": "<<texto<<endl; 00243 fichero.getline(texto,256);} 00244 if(elemento=="3") 00245 {fich<<"I de Bobina entre nodos "<<nodoi<<", "<<nodoj<<": "<<texto<<endl; 00246 fichero.getline(texto,256);} 00247 if(elemento=="4") 00248 {fich<<"I de Fuente tension entre nodos "<<nodoi<<", "<<nodoj<<": "<<texto<<endl; 00249 fichero.getline(texto,256);} 00250 if(elemento=="6") 00251 {fich<<"I de Amplificador entre nodos "<<nodoi<<", "<<nodoj<<": "<<texto<<endl; 00252 fichero.getline(texto,256);} 00253 if(elemento=="7") 00254 {fich<<"I de Trafo entre nodos "<<nodoi<<", "<<nodoj<<": "<<texto<<endl; 00255 fichero.getline(texto,256); 00256 fich<<"I de Trafo entre nodos "<<nodom<<", "<<nodon<<": "<<texto<<endl; 00257 fichero.getline(texto,256);} 00258 if(elemento=="9") 00259 {fich<<"I de Fuente de V dependiente de V entre nodos "<<nodoi<< 00260 ", "<<nodoj<<": "<<texto<<endl; 00261 fichero.getline(texto,256);} 00262 if(elemento=="10") 00263 {fich<<"I de Fuente de I dependiente de I entre nodos "<<nodoi<< 00264 ", "<<nodoj<<": "<<texto<<endl; 00265 fichero.getline(texto,256);} 00266 if(elemento=="11") 00267 {fich<<"I de Fuente de V dependiente de I entre nodos "<<nodoi<< 00268 ", "<<nodoj<<": "<<texto<<endl; 00269 fichero.getline(texto,256); 00270 fich<<"I de Fuente de V dependiente de I entre nodos "<<nodom<< 00271 ", "<<nodon<<": "<<texto<<endl; 00272 fichero.getline(texto,256);} 00273 if(elemento=="12") 00274 {fich<<"I de Bobinas Acopladas entre nodos "<<nodoi<< 00275 ", "<<nodoj<<": "<<texto<<endl; 00276 fichero.getline(texto,256); 00277 fich<<"I de Bobinas Acopladas entre nodos "<<nodom<<", "<< 00278 nodon<<": "<<texto<<endl; 00279 fichero.getline(texto,256);} 00280 if(elemento=="13") 00281 {fich<<"I que recorre el Interruptor entre nodos "<<nodoi<< 00282 ", "<<nodoj<<"\n"; 00283 fichero.getline(texto,256);} 00284 if(elemento=="15") 00285 {fich<<"I de Cuatripolo en Z entre nodos "<<nodoi<<", "<<nodoj<< 00286 ": "<<texto<<endl; 00287 fichero.getline(texto,256); 00288 fich<<"I de Cuatripolo en Z entre nodos "<<nodom<<", "<<nodon<< 00289 ": "<<texto<<endl; 00290 fichero.getline(texto,256);} 00291 if(elemento=="16") 00292 {fich<<"I de Cuatripolo en h entre nodos "<<nodoi<<", "<<nodoj<< 00293 ": "<<texto<<endl; 00294 fichero.getline(texto,256);} 00295 if(elemento=="17") 00296 {fich<<"I de Cuatripolo en r entre nodos "<<nodoi<<", "<<nodoj<< 00297 ": "<<texto<<endl; 00298 fichero.getline(texto,256);} 00299 } 00300 if (esA2=="1") 00301 { 00302 if(esEA=="1") 00303 { 00304 if(esEA=="1") 00305 { 00306 if(elemento=="0") 00307 { 00308 fich<<"Intensidad de "<<queescribo(p_DATOS->tableMDG->text(j,0))<< 00309 " entre nodos "<<nodoi<<", " 00310 <<nodoj<<": "<<texto<<endl; 00311 fichero.getline(texto,256); 00312 } 00313 if(elemento=="2") 00314 { 00315 fich<<"Intensidad de "<<queescribo(p_DATOS->tableMDG->text(j,0))<< 00316 " entre nodos "<<nodoi<<", " 00317 <<nodoj<<": "<<texto<<endl; 00318 fichero.getline(texto,256); 00319 } 00320 if(elemento=="8") 00321 {fich<<"I de Fuente de I dependiente de V entre nodos "<<nodom<<", "<< 00322 nodon<<": "<<texto<<endl; 00323 fichero.getline(texto,256);} 00324 } 00325 } 00326 } 00327 } 00328 fichero.close(); 00329 } 00330 00331 if(p_DATOS->transitorio==1) 00332 { 00333 PetscViewerASCIIOpen(PETSC_COMM_WORLD, "variables.data", &viewer); 00334 PetscViewerDestroy(viewer); 00335 fstream fich("variables.data", ios::in |ios::out | ios::trunc | ios::binary); 00336 char texto[100]; 00337 ifstream fichero; 00338 // Abro para lectura 00339 fichero.open("x_trans.data"); 00340 if (!fichero) 00341 { 00342 cout << "No se ha podido abrir el fichero variables data."<< endl; 00343 exit(1); 00344 } 00345 fichero.getline(texto,256); 00346 //fichero >> texto; 00347 for (int i=0; i<p_DATOS->nodos; i++) 00348 { 00349 fich<<"V en nodo "<<i+1<<"\n"; 00350 fichero.getline(texto,256); 00351 } 00352 QString esA2, esEA, elemento, nodoi, nodoj, nodom, nodon; 00353 00354 for(int j=0; j<p_DATOS->elementos;j++) 00355 { 00356 esA2=p_DATOS->tableMDG->text(j,3); 00357 esEA=p_DATOS->tableMDG->text(j,2); 00358 elemento=p_DATOS->tableMDG->text(j,0); 00359 nodoi=p_DATOS->tableMN->text(j,0); 00360 nodoj=p_DATOS->tableMN->text(j,1); 00361 nodom=p_DATOS->tableMN->text(j,2); 00362 nodon=p_DATOS->tableMN->text(j,3); 00363 00364 if (esA2=="2") 00365 { 00366 if(elemento=="1") 00367 {fich<<"I Resistencia entre nodos "<<nodoi<<", "<<nodoj<<endl; 00368 fichero.getline(texto,256);} 00369 if(elemento=="3") 00370 {fich<<"I de Bobina entre nodos "<<nodoi<<", "<<nodoj<<endl; 00371 fichero.getline(texto,256);} 00372 if(elemento=="4") 00373 {fich<<"I de Fuente tension entre nodos "<<nodoi<<", "<<nodoj<<endl; 00374 fichero.getline(texto,256);} 00375 if(elemento=="6") 00376 {fich<<"I de Amplificador entre nodos "<<nodoi<<", "<<nodoj<<endl; 00377 fichero.getline(texto,256);} 00378 if(elemento=="7") 00379 {fich<<"I de Trafo entre nodos "<<nodoi<<", "<<nodoj<<endl; 00380 fichero.getline(texto,256); 00381 fich<<"I de Trafo entre nodos "<<nodom<<", "<<nodon<<endl; 00382 fichero.getline(texto,256);} 00383 if(elemento=="9") 00384 {fich<<"I de Fuente de V dependiente de V entre nodos "<<nodoi<<", "<<nodoj<<endl; 00385 fichero.getline(texto,256);} 00386 if(elemento=="10") 00387 {fich<<"I de Fuente de I dependiente de I entre nodos "<<nodoi<<", "<<nodoj<<endl; 00388 fichero.getline(texto,256);} 00389 if(elemento=="11") 00390 {fich<<"I de Fuente de V dependiente de I entre nodos "<<nodoi<<", "<<nodoj<<endl; 00391 fichero.getline(texto,256); 00392 fich<<"I de Fuente de V dependiente de I entre nodos "<<nodom<<", "<<nodon<<endl; 00393 fichero.getline(texto,256);} 00394 if(elemento=="12") 00395 {fich<<"I de Bobinas Acopladas entre nodos "<<nodoi<<", "<<nodoj<<endl; 00396 fichero.getline(texto,256); 00397 fich<<"I de Bobinas Acopladas entre nodos "<<nodom<<", "<<nodon<<endl; 00398 fichero.getline(texto,256);} 00399 if(elemento=="13") 00400 {fich<<"I que recorre el Interruptor entre nodos "<<nodoi<<", "<<nodoj<<"\n"; 00401 fichero.getline(texto,256);} 00402 if(elemento=="15") 00403 {fich<<"I de Cuatripolo en Z entre nodos "<<nodoi<<", "<<nodoj<<endl; 00404 fichero.getline(texto,256); 00405 fich<<"I de Cuatripolo en Z entre nodos "<<nodom<<", "<<nodon<<endl; 00406 fichero.getline(texto,256);} 00407 if(elemento=="16") 00408 {fich<<"I de Cuatripolo en h entre nodos "<<nodoi<<", "<<nodoj<<endl; 00409 fichero.getline(texto,256);} 00410 if(elemento=="17") 00411 {fich<<"I de Cuatripolo en r entre nodos "<<nodoi<<", "<<nodoj<<endl; 00412 fichero.getline(texto,256);} 00413 } 00414 if (esA2=="1") 00415 { 00416 if(esEA=="1") 00417 { 00418 if(esEA=="1") 00419 { 00420 if(elemento=="0") 00421 { 00422 fich<<"Intensidad de "<<queescribo(p_DATOS->tableMDG->text(j,0))<< 00423 " entre nodos "<<nodoi<<", "<<nodoj<<endl; 00424 fichero.getline(texto,256); 00425 } 00426 if(elemento=="2") 00427 { 00428 fich<<"Intensidad de "<<queescribo(p_DATOS->tableMDG->text(j,0))<< 00429 " entre nodos "<<nodoi<<", "<<nodoj<<endl; 00430 fichero.getline(texto,256); 00431 } 00432 if(elemento=="8") 00433 {fich<<"I de Fuente de I dependiente de V entre nodos "<<nodom<< 00434 ", "<<nodon<<endl;fichero.getline(texto,256);} 00435 } 00436 } 00437 } 00438 00439 } 00440 fichero.close(); 00441 } 00442 return 0; 00443 }
| QString queescribo | ( | QString | escribir | ) |
Función que se encarga de complementar a mostrar_solucion para escribir el tipo de elemento del que se está tomando la variable Esta función, dependiendo de que elemento, retorna un QString con el nombre del mismo para poder escribirlo en el fichero de soluciones.
| Puntero | a estructura basicos |
Definición en la línea 448 del archivo estructuras.cpp.
00449 { 00450 QString retorno; 00451 bool result; int escrito; 00452 escrito=escribir.toInt(&result,10); 00453 switch (escrito) 00454 { 00455 case 0: retorno="Conductancia"; 00456 return retorno;break; 00457 case 1: cout<<"\n ERROR La resistencia es siempre del Grupo A2"<< 00458 endl ;break; 00459 case 2: retorno="Condensador"; 00460 return retorno;break; 00461 case 3: cout<<"\n ERROR La bobina es siempre del Grupo A2"<< 00462 endl;break; 00463 case 4: retorno="Fuente de Tensión"; 00464 return retorno;break; 00465 case 5: retorno="Fuente de Corriente"; 00466 return retorno;break; 00467 case 6: retorno="Amplificador Operacional"; 00468 return retorno;break; 00469 case 7: retorno="Transformador"; 00470 return retorno;break; 00471 case 8: retorno="Fuente de Corriente dependiente de Tensión"; 00472 return retorno;break; 00473 case 9: retorno="Fuente de Tensión dependiente de Tensión"; 00474 return retorno;break; 00475 case 10: retorno="Fuente de Intensidad dependiente de Intensidad"; 00476 return retorno;break; 00477 case 11: retorno="Fuente de Tensión dependiente de Intensidad"; 00478 return retorno;break; 00479 case 12: retorno="Bobinas Acopladas"; 00480 return retorno;break; 00481 case 13: cout<<"\n ERROR Este elemento no existe en Ávalon"<< 00482 endl; break; 00483 } 00484 }
| QString script | ( | basicos * | p_DATOS | ) |
Función que se abrir el script para que el usuario pueda modificarlo y adaptarlo a sus necesidades.
| Puntero | a estructura basicos |
Definición en la línea 724 del archivo estructuras.cpp.
00725 { 00726 QString comando = p_DATOS->datos_script; 00727 comando.prepend("kwrite ");//añade "convert " al string comando 00728 return comando; 00729 }
1.5.6