Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вариант_ Пеньков.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
1.78 Mб
Скачать

Приложение п.1. Программа расчета

program basse !CD по Адамару-Рыбчинскому сила Бассе как в классическом решении Васенина

!члены exp*erf логарифмируются, а потом потенцируются, чтобы избежать переполнения. Расчет возможен

! для mu=0.35 и ds=0.005 до времени 12 секунд, далее erf уходит в ноль

! !Zadatscha dla puzira !!!!!!!!!!!!!!

double precision b,c,T0,h,t,ds,ros,mu, A,TT,u1,u2,uu,ust1,ust2,x,xst,y1,y2,fi,kk,upr,bb,ustarh,fiadam

integer*4 n,lam,ksi

real g,b1,b2,Tk

common /aa/b1,b2,b3,g,Tk

open(1,file="adamar.dat")

b1=(3.0*sqrt(1.5)+sqrt(19.0)/2.0)/2.0

b2=(3.0*sqrt(1.5)-sqrt(19.0)/2.0)/2.0

b3=8.0*sqrt(19.0)/35.0

g=9.81

NN=160

Tk=1600.0 !-это 12 секунд !конечное время расчета безразмерное

mu=0.23 !!вязкость касторового масла !1.5 !вязкость водно-глицеринового раствора: 0.4-для концентрации 91,308,здесь вода

ros=935 !960.0 ! это касторка 1235.4 !плотность водно-глицеринового раствора для той же концентрации (чистая вода)

rok=1.25 ! плотность воздуха в пузырьке

ds=0.0032 !37 !0.01 !диаметр капли

T0=ros*ds*ds/(24*mu) !характерное время

lam=0

ksi=1

h=Tk/NN !шаг по времени безразмерный, N-количество шагов

t=0.0 !текущее безразмерное время

n=0

u1=0.0

ust1=0.0

x=0.0

xst=0.0

A=0.0

TT=0.0

fi=18.0*mu/(rok*ds*ds)

fiadam=2.0/3.0*fi

kk=1.0+ros/(2.0*rok)

bb=b1

b=Tk

! c=Erf(1000000, bb*10.2D+0, b)

! c=770.0

! b=dexp(c)

do while (n .le. NN)

! TT=n*h ! T(n)=t/T0

t=TT

! A(n)=a(T0,t)

u2=ub(T0,t) !скорость с учетом силы Бассе и присоединенной массы

! b=uu

ust2=2.0*g*T0*(1-dexp(-TT)) !Скорость по Стоксу

ustarh=g/fiadam*(1-ros/rok)*(1-dexp(-fiadam*t*T0))

x=x+T0*(u1+u2)*h/2

! c=x(n)

xst=xst+T0*(ust1+ust2)*h/2

if(n.eq.lam)then

lam=lam+ksi

! write(*,*) 'Upr=', g/fi*(1.0-1.0/ros)*(1-dexp(-fi/kk*T0*TT))

write(*,*) ' T=',T0*TT,' u=',u2,' ust=',ust2,' Re=',ds*u1*ros/mu,'T(n)=',TT,'x=',x

endif

y1=b1*dsqrt(t)

y2=b2*dsqrt(t)

write(1,1) TT*T0,u2, ust2,x,xst,TT,n !,y1,y2,Erf(1000000,y1,Tk),Erf(1000000,y2,Tk)

u1=u2

ust1=ust2

TT=TT+h

n=n+1

enddo

close(1)

1 format(7f20.11,i7,4e12.5)

end

double precision function ub(T0,t)

double precision T0,t

integer*4 num

double precision Xmax,a,a1,c,d

common /aa/b1,b2,b3,g,Tk

num=5000000 !500000 !40000

Xmax=Tk; !5056.0 !78000.0 !51200 !25600 !6400.0 !40

c=Erf(num,b2*dsqrt(t),Xmax)

d=dexp(b2*b2*t+dlog(c))

a=1.0/b2*d

c=Erf(num,b1*dsqrt(t),Xmax)

if (dabs(c).gt.0.0) then

d=dexp(b1*b1*t+dlog(c))

else

d=0.0

endif

a1=1.0/b1*d

a=(a-a1)/b3

! a=(1.0/b2*exp(b2*b2*t)*Erf(num,b2*dsqrt(t),Xmax)-1.0/b1*exp(b1*b1*t)*Erf(num,b1*dsqrt(t),Xmax))/dsqrt(5.0)

ub=2.0*g*T0*(1.0-a)

end

double precision function Erf(num, arg, Xmax)

integer*4 num

double precision arg, Xmax

integer*4 k

double precision x,asch,kvadrat,kvadra,kvadrm,exponent,expa,expm,nul,sum,fpi

! fpi=1.128379167095 !5125738961589

fpi=2.0/dsqrt(dacos(-1.0D+0))

asch=(Xmax-arg)/num

kvadra=-arg*arg

expa=dexp(kvadra)

kvadrm=-Xmax*Xmax

expm=dexp(kvadrm)

nul=(expa+expm)*asch/2

k=0

sum=0.0

x=arg

do while(k.lt.num)

x=x+asch

kvadrat=-x*x

exponent=dexp(kvadrat)

sum=sum+exponent

k=k+1

enddo

sum=sum*asch

sum=sum+nul

Erf=(FPI*sum)

end

70