c bomba.f c Urychleni vulkanicke bomby rozpinajicim se plynem. c Miroslav Broz (miroslav.broz@email.cz), Feb 16th 2008 program bomba implicit none real*8 pi, deg, rad parameter(pi = 3.1415926535d0, deg = pi/180.d0, rad = 180.d0/pi) real*8 x_0, v_0, R, rho, g, p_atm, p_0, Vol_0, kappa, : dt, dtout, tmax real*8 t, x, v, a, m, S, tout, eps, p c nacteni vstupnich parametru read(*,*) x_0 read(*,*) v_0 read(*,*) R read(*,*) rho read(*,*) g read(*,*) p_atm read(*,*) p_0 read(*,*) Vol_0 read(*,*) kappa read(*,*) dt read(*,*) dtout read(*,*) tmax m = 4./3.*pi*R**3 * rho S = pi*R**2 eps = 1.e-6 c pocatecni hodnoty t = 0.d0 x = x_0 v = v_0 p = p_0 tout = t + dtout write(*,*) "# t [s] & x [m] & v [m/s] & a [m/s^2]" write(*,20) t, x, v, a, p 20 format(5(f16.8,1x)) c jednoduchy integrator do while (t.lt.tmax) t = t + dt if (p.gt.(p_atm+eps)) then p = p_0*Vol_0**kappa / (Vol_0+S*x)**kappa else p = p_atm endif a = S/m*(p - p_atm) - g v = v + a*dt x = x + v*dt + 1./2.*a*dt**2 if (t.ge.tout-eps) then write(*,20) t, x, v, a, p tout = tout + dtout endif enddo write(*,20) t, x, v, a, p stop end