Se sei già registrato           oppure    

Orario: 07/05/2024 17:03:48  

 

Energia Alternativa ed Energia Fai Da Te > Acqua: come utilizzarla, generarla e sfruttarla

VISUALIZZA L'ALBUM

Pagine: (6)   1   [2]   3   4   5   6    (Ultimo Msg)


ram pump theory, teoria esimulazioni
FinePagina

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 31/01/2015 17:42:35

CITAZIONE (qqcreafis, 31/01/2015 17:30:12 ) Discussione.php?212316&1#MSG15

hem... potrei vedere il listato ..

Confermo che è il tuo codice...lo inserisco...purtroppo salta l'indentazione...ma se carichi la citazione dovresti vederlo in chiaro..
Ho inserito le variabili intermedie dd2,dd3 per capire il motivo dell'errore...
Cmq non l'ho terminato...volevo integrare il 'foglio exel microsoft' nell'eseguibile...c'è anche questa possibilità.



Const PIGRECO = 3.14159265358979
Dim INDICE_MATRICE1 As Integer
Dim INDICE_MATRICE2 As Integer

Dim psi() As Double ' matricetempo lunghezza

Dim Rho As Double ' densità fluido

Dim V0 As Double ' velocità iniziale colonna

Dim deltat As Double ' intervallo di tempo

Dim N As Integer ' numero di interazioni tra due visualizzazioni

Dim tot As Double 'tempo totale simulazione

Dim tintermedio As Double 'tempo N*deltat

Dim ltot As Double ' lunghezza ariete

Dim L0 As Double ' distanza tra segmenti L0=ltot/10000

Dim B As Double ' compressibilità

Dim Vfase As Double ' velocità sperimentale

Dim D As Double ' diametro ariete

Dim P As Double ' pressione contraria

Dim F As Double ' forza contraria

Dim A As Double ' area sezione

Dim i, J, K As Integer ' contatori


Function GiveMeDouble(t As String) As Double
GiveMeDouble = t
End Function


Private Sub Command1_Click()
Dim i As Integer
Dim dd As Double
Dim dd2 As Double
Dim dd3 As Double

INDICE_MATRICE1 = TINDICE_MATRICE1
INDICE_MATRICE2 = TINDICE_MATRICE2

ReDim psi(INDICE_MATRICE1, INDICE_MATRICE2) As Double

Rho = GiveMeDouble(TRho.Text)
deltat = GiveMeDouble(TDeltaT.Text)

A = PIGRECO * GiveMeDouble(TD.Text) * GiveMeDouble(TD.Text) / 4
TA.Text = Format(A, "0.0000")
P = GiveMeDouble(TP.Text)
F = P * A
TF.Text = Format(F, "0.0000")

tot = GiveMeDouble(TDeltaT.Text) * GiveMeDouble(TN.Text) * INDICE_MATRICE1
Ttot.Text = Format(tot, "0.0000")

B = GiveMeDouble(TVFase.Text) * GiveMeDouble(TVFase.Text) * GiveMeDouble(TRho.Text)
TB.Text = Format(B, "0.0000")

L0 = GiveMeDouble(Tltot.Text) / 10000#
TL0.Text = Format(L0, "0.0000")

TStatus.Text = "Inizio"

psi(0, 0) = 0

For i = 1 To INDICE_MATRICE2
    psi(0, i) = L0 + psi(0, i - 1)
Next i

'primo spostamento V0*deltat +psi precedente
For i = 0 To INDICE_MATRICE2
    psi(1, i) = psi(0, i) - V0 * deltat
Next i



For J = 2 To INDICE_MATRICE1

  dd3 = (psi(J - 1, 1) - psi(J - 1, 0) - L0)
  dd2 = 1 / Rho * (deltat / L0) * (deltat / L0) * (P * L0 + B * dd3)
  dd = psi(J - 2, 0) + dd2
  psi(J, 0) = 2 * psi(J - 1, 0) - dd
  For i = 1 To INDICE_MATRICE2 - 1
    dd = psi(J - 2, i) + B / Rho * (deltat / L0) * (deltat / L0) * (psi(J - 1, i + 1) - 2 * psi(J - 1, i) + psi(J - 1, i - 1))
    psi(J, i) = 2 * psi(J - 1, i) - dd
  Next i
  psi(J, INDICE_MATRICE2) = 2 * psi(J - 1, INDICE_MATRICE2) - psi(J - 2, INDICE_MATRICE2) + B / Rho * (deltat / L0) * (deltat / L0) * (psi(J - 1, INDICE_MATRICE2) - psi(J - 1, INDICE_MATRICE2 - 1) - L0)
  TJ.Text = J

Next J

End Sub

Private Sub Form_Load()
 INDICE_MATRICE1 = 999
 INDICE_MATRICE2 = 9999
End Sub



Modificato da NonSoloBolleDiAcqua - 31/01/2015, 19:34:22


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 31/01/2015 17:45:51

CITAZIONE (qqcreafis, 31/01/2015 17:42:35 ) Discussione.php?212316&2#MSG16

come faccio a scaricarmi vb6 ?????????

Prova questa: LINK, non ho la linea internet seria...non posso sapere se è una fregatura.
Ti consiglio la piattaforma completa visual 6...ho una versione per studenti ... quella che uso anche io...in fondo in fondo sono uno studente...mi sa che si fa prima a spedirla!

In questo modo parleremo la stessa lingua...



Modificato da NonSoloBolleDiAcqua - 31/01/2015, 17:56:06


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 31/01/2015 18:52:10

non so perchè ma...mi sento caduto in una imboscata...serve la virgola mobile in precisione quadrupla...



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 31/01/2015 19:49:03

Con i tool microsoft per la doppia precisione non si riesce ad andare oltre ±1.79769313486231570E+308...(sono anche fuori standard IEEE 754), anche in c il long double (precisione quadrupla) bomba senza ritegno...a questo punto una domanda spontanea: qq come fa a girare il tuo codice?
stai su windows oppure ?



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

qqcreafis

Avatar
PetaWatt


Gruppo:Utente
Messaggi:10029

Stato:



Inviato il: 31/01/2015 21:53:05

non ti preoccupare, mi sono ricordato che ho tutti i diritti (basta farli valere...e sapere di averli ovviamenti... ) lunedì vado a "litigare" per farmi dare un'iscrizione a msdn ( a cui HO DIRITTO)e dovrei accedere a tutti i linguaggi microsoft (ci avevo già provato all'inizio a settembre e avevo ricevuto qualche riflessione,... per fortuna che con i tecnici sono sempre stato in buoni rapporti...)


ricontrollo il codice lo commento di più lo provo unicamente con 99 iterazioni da 10000

speriamo che il doppio incollaggio e spero di non aver fatto modifiche o che l'ide del vba di exel



Modificato da qqcreafis - 31/01/2015, 21:56:34


---------------
ODE AD UNO STUDENTE MERITEVOLE (Sermone)
Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo !
In un mondo dove tutto SEMBRA uguale a tutto.
In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti.
In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”.
Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto.
Xyz ci da una SPERANZA.
Xyz non ha seguito le falsità che ci circondano.
Xyz si è impegnato ed è riuscito nel suo intento.

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 01/02/2015 00:24:32

ok, secondo me si fa prima con la spedizione...avremmo la stessa versione senza intoppi anche per altre cose ()...purtroppo non sono tutte uguali ...versione, italiano, inglese (odio bill)

Cmq questo è il progetto, lo si scarica in una cartella, doppio click su Progetto1.vbp e si vede il codice e la form, muoversi sul vb è decisamente facile un po meno per il vc.

Scarica allegato

RamPumpTheoryCode.zip ( Numero download: 192 )



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

qqcreafis

Avatar
PetaWatt


Gruppo:Utente
Messaggi:10029

Stato:



Inviato il: 01/02/2015 19:03:25

mando due file una è la nuova macro che è praticamente uguale ho migliorato i dati in ingresso ,ho messo la pressione in bar, inoltre ho aggiunto il numero di interazioni che in realtà possono essere ben più di 999 (ci vuole un supercomputer però)


il problema fondamentale è che il tempo deltat deve esssere veramente molto breve dell'ordine delle decine di nanosecondi (poi spiegherò)e quindi con solo 1000 interazioni non si conclude nulla si arriva a 10 microsecondi di simulazione
in realtà la matrice psi(J,I) j=0..999 e I=0..9999 voleva contenere in ogni j lo stato della colonna d'acqua ogni N (ad es N=1000) interazioni cosa che farò presto ma attualmente non ho implementato

quindi il sw dovrebbe essere giusto ma non posso testarlo a fondo


c'è la pagina con i dati di ingresso in particolare lunghezza ariete , deltata, munero di iterazioni attualmente a 999 (1000), la pressione dopo la valvola di alta pressione e alcuni di uscita (lo, tempotot,)
http://www.energialternativa.info/public/newforum/ForumEA/D/pova0.zip



Modificato da qqcreafis - 01/02/2015, 19:20:32


---------------
ODE AD UNO STUDENTE MERITEVOLE (Sermone)
Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo !
In un mondo dove tutto SEMBRA uguale a tutto.
In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti.
In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”.
Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto.
Xyz ci da una SPERANZA.
Xyz non ha seguito le falsità che ci circondano.
Xyz si è impegnato ed è riuscito nel suo intento.

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 01/02/2015 19:33:31

CITAZIONE (qqcreafis, 01/02/2015 19:03:25 ) Discussione.php?212316&2#MSG24

non posso testarlo a fondo

ci penso io a testarlo...così può andar bene?Faccine/wallbash.gif

Cinquanta Faccine/mf_laughbounce.gif!



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

qqcreafis

Avatar
PetaWatt


Gruppo:Utente
Messaggi:10029

Stato:



Inviato il: 02/02/2015 09:28:41

il problema della simulazione è che il tempo deltat deve essere molto inferiore al tempo necesssario all'onda di comunicare tra due parti di acqua

ad es noi abbiamo un ariete di 3 m che viene discretizzato in 10000 parti

quindi L=3/10000m=0,3mm

la velocità dell'onda è stata presa come 50m/s (è un dato sperimentale che andrebbe misurato dipende dal contenuto in gas dell'H2O dall'elasticità del tubo ecc ecc )ma potrebbe essere molto di più

deltat<< 0,0003m/(50m/s)=0,000006s

deltat<<6microsecondi

se si usano 25 nanosecondi per simulare 0,25 secondi ci vogliono 100000000 di cicli

bisogna porre N =100000 (ma non ho ancora implementato N)


se qualcuno ha un cray vettoriale si può fare anche 0,000001 ns



Modificato da qqcreafis - 02/02/2015, 09:31:50


---------------
ODE AD UNO STUDENTE MERITEVOLE (Sermone)
Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo !
In un mondo dove tutto SEMBRA uguale a tutto.
In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti.
In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”.
Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto.
Xyz ci da una SPERANZA.
Xyz non ha seguito le falsità che ci circondano.
Xyz si è impegnato ed è riuscito nel suo intento.

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 02/02/2015 10:22:36

La spiegazione è chiara...


CITAZIONE (qqcreafis, 02/02/2015 16:51:56 ) Discussione.php?212316&2#MSG26


se qualcuno ha ...

si può tentare un'altra strada...fammi risolvere il problema 'matematico' e poi passo a quello 'matematico-informatico'.


-------------------------------------------------


Ho inserito la variabile nitertemp...di default parte con 23 ...oltre va in overflow ()...allego l'eseguibile...questa strada non porta da nessuna parte...quando il gioco si fa duro allora si che ci si diverte!

Scarica allegato

RamPumpTheory1.1.zip ( Numero download: 204 )



Modificato da NonSoloBolleDiAcqua - 02/02/2015, 17:39:56


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 02/02/2015 12:56:58

Xnumbers60 è un portento...ho trovato solo l'xlam ma non le dll...il sito del creatore italiano ,Leonardo Volpi , è stato rimosso...


questo il tutorial con esempi Excel VBA :Download



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 02/02/2015 16:51:56

Evvai, vittoria...problema 'matematico' risolto...
Ho trovato il modo di integrare l'Xnumbers60 nella piattaforma Visual...l'eseguibile eleva il numero di nepero alla 0.5 con precisione che va da 30 cifre a 210 cifre...infine stampa il valore di e^10000 con 200 cifre di precisione ... cioè
8,8068182256629215872614960076445610035200040855915089364245707627622328952
761986855247353944862165292409837913432949731721509511501665095146742182750403
835149715045482866682906141157989859619046849667E+4342

sarà veramente lui?

Ora non ci ferma più nessuno...tranne illo ovviamente : cinquantaFaccine/mf_laughbounce.gif!

Ditemi se vi funzica...dovrebbe uscire questa sbrodolata
1,64872127070012814684865078781 ( 30)
1,648721270700128146848650787814163571653 ( 40)
1,6487212707001281468486507878141635716537761007101 ( 50)
1,64872127070012814684865078781416357165377610071014801157507 ( 60)
1,648721270700128146848650787814163571653776100710148011575079311640661 ( 70)
1,6487212707001281468486507878141635716537761007101480115750793116406610211942156 ( 80)
1,64872127070012814684865078781416357165377610071014801157507931164066102119421560863277652 ( 90)
1,648721270700128146848650787814163571653776100710148011575079311640661021194215608632776520056366643 ( 100)
1,6487212707001281468486507878141635716537761007101480115750793116406610211942156086327765200563666430028666377 ( 110)
1,648721270700128146848650787814163571653776100710148011575079311640661021194215608632776520056366643002866637756307797 ( 120)
.....
.....
1,6487212707001281468486507878141635716537761007101480115750793116406610211942156086327765200563666430028666377563077970046711669752
1960915984097145249005979692942265909840391471994846465948924489686890533641846 ( 210)


e^10000=8,806818225662921587261496007644561003520004085591508936424570762762232895276198685524735394486216529240983791343294973172150951150166509514674218275040383
5149715045482866682906141157989859619046849667E+4342



Scarica allegato

MathPrecision.zip ( Numero download: 190 )



Modificato da NonSoloBolleDiAcqua - 02/02/2015, 17:37:01


---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 02/02/2015 18:06:57

Sto partorendo la RamPumpTheory1.2...miiiiii è una lumachella...



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 

qqcreafis

Avatar
PetaWatt


Gruppo:Utente
Messaggi:10029

Stato:



Inviato il: 02/02/2015 23:49:50


CITAZIONE

nel listato che mi hai mandato ho individuato due errori

il primo l'ho trovato l'altro so che c'è

http://www.energialternativa.info/public/newforum/ForumEA/D/dueerr_1.PNG

nell'immagine si nota la correzione sotto è come dovrebbe essere


forse è meglio eliminare dd dd2 ecc ecc e scriverla piana

l'altro errore si rileva impostando la pressione a zero si dovrebbe ottenere una colonna marciante alla stessa velocita v0 in realta per la prima particella le prime due posizioni primi due sono zero e poi diverge


dovrebbe essere 0, 0-v0*deltat, 0-2*V0*deltat, ecc ecc

Vfase compare in due box?


comunque appena ho 5 min tutti attaccati provo a trovare l'errore

devo implementare N


comunque i double dovrebbero andare bene (excel fa i calcoli con 15 cifre decimali STOP)



Immagine Allegata: dueerr.PNG
 
ForumEA/D/dueerr.PNG



Modificato da qqcreafis - 03/02/2015, 00:00:30


---------------
ODE AD UNO STUDENTE MERITEVOLE (Sermone)
Allora Xyz è stato bravo! noi dobbiamo riconoscere che è stato molto bravo, bisogna dirlo !
In un mondo dove tutto SEMBRA uguale a tutto.
In un mondo dove chi abbruttisce la dignità dell’intelligenza umana si arroga meriti.
In un mondo in cui si dice che i giovani non hanno speranza perché “tanto non troveranno lavoro” perché tanto non “non avranno la pensione”.
Xyz è stato bravo! ha capito tutto, ha fatto un compito perfetto.
Xyz ci da una SPERANZA.
Xyz non ha seguito le falsità che ci circondano.
Xyz si è impegnato ed è riuscito nel suo intento.

 

NonSoloBolleDiAcqua

Avatar
PetaWatt


Gruppo:AMMINISTRATORE
Messaggi:13786

Stato:



Inviato il: 03/02/2015 00:11:51

ok per gli errori, considera che devo riscrivere tutto con l'xnumbers altrimenti va overflow...domani ricontrollo e posto la nuova versione senza limiti!
Verificami se ti gira mathprecision...



---------------
Chi sa raccontare bene le bugie ha la verità in pugno (by PinoTux).
Un risultato se non è ripetibile non esiste (by qqcreafis).

 
 InizioPagina
 

Pagine: (6)   1   [2]   3   4   5   6    (Ultimo Msg)

Versione Mobile!

Home page       TOP100-SOLAR      Home page forum