29 rhoc,toa,rb,fr,bflag,tnp1,tflame,coor)
40 REAL(DBL),
INTENT(IN) :: delt,p,to,rhoc
41 REAL(DBL),
INTENT(IN) :: qc,qc_old,qr,qr_old
42 REAL(DBL),
INTENT (INOUT) :: toa, rb, fr
43 INTEGER,
INTENT(INOUT) :: bflag
44 REAL(DBL),
INTENT(OUT) :: tflame
45 REAL(DBL),
INTENT(IN) :: tn(:)
46 REAL(DBL),
INTENT(OUT) :: tnp1(:)
47 REAL(DBL),
INTENT(IN) :: coor(3)
53 REAL(DBL) :: first,second
61 IF ( .true. .AND. (.NOT. (p > bp%P_range(1) .AND. p < bp%P_range(2)) ))
THEN
62 write(*,*)
"INPUT PRESSURE OUT OF RANGE",p,bp%P_range
63 CALL mpi_abort(bp%comm, 1, ierror)
70 bw%rhoc = rhoc*kgmc2gcc
71 bw%Qc = qc*j_msq2cal_cmsq
72 bw%Qcprime = qr*j_msq2cal_cmsq
75 bw%lamc = bw%rhoc * bp%alfac * bp%C
81 rb_old =
merge(bw%rb,
zero, bw%Ts >= bp%Tignition)
85 first = (tn(
i+1)-tn(
i-1))*bp%delz2inv
86 second = (tn(
i+1)-2.0d0*tn(
i)+tn(
i-1))*bp%delzsqinv
88 tnp1(
i)=tn(
i)+delt*( &
89 (bw%alfa_eff*bp%zxx(
i) - rb_old*bp%zx(
i)) * first &
90 + bw%alfa_eff*bp%zx(
i)**2 * second)
97 bw%ignited = (bw%Ts > bp%Tignition)
102 coe = three + two*bw%fsprime*bp%dx1;
103 rhs = two*bp%dx1*(bw%fs - bw%fsprime*bw%Ts);
104 add = four*tnp1(2) - one*tnp1(3);
110 bw%ignited = (bw%Ts > bp%Tignition)
111 bflag =
merge(1,0,bw%ignited)
124 bw%rb =
merge(bw%rb,
zero, bw%Ts >= bp%Tignition)
134 IF (.true. .AND. (.NOT. (rb > bp%rb_range(1) .AND. rb < bp%rb_range(2)) ))
THEN
135 write(*,*)
"OUTPUT RB OUT OF RANGE",rb,bp%rb_range
137 write(*,*)
i,bp%x(
i),tnp1(
i),tn(
i)
139 CALL mpi_abort(bp%comm, 1, ierror)
142 IF (.true. .AND. (.NOT. (tflame > bp%Tf_range(1) .AND. tflame < bp%Tf_range(2)) ))
THEN
143 write(*,*)
"OUTPUT TFLAME OUT OF RANGE",tflame,bp%Tf_range,bflag,bw%Ts,p
145 write(*,*)
i,bp%x(
i),tnp1(
i),tn(
i)
147 CALL mpi_abort(bp%comm, 1, ierror)
169 REAL(DBL) :: expterm,invtsq,tstar,tmp1,tmp2,
dy
173 bw%c1 = -log(bp%a_p/bp%Ac*(bw%P/bp%Pref)**bp%n_p)/bp%ec_ru
174 bw%c2 = one / bp%Tstar0
175 bw%c3 = two * bp%ec_ru / bp%eg_ru
179 if(bp%TABUSE == 0)
then
180 bw%c4 = bp%Tstar0 - bw%To
181 bw%c5 = bp%Ac / bp%alfac
185 bw%Tslimit = one/( bw%c1 - bw%c2/bw%c3 ) * 0.99
187 invtsq = one / bw%Ts**2
188 expterm = bw%c5 * exp(bw%c6 / bw%Ts)
189 tstar = one/(bw%c2-bw%c3*(bw%c1-one/bw%Ts))
191 if ( bw%Ts > bw%Ts0 .AND. bw%Ts > bw%Tslimit ) tstar = bp%Tstar0
192 bw%fs = expterm * ( bw%c4 + bw%Ts-tstar )
193 bw%fsprime = bw%c6 * bw%fs * invtsq &
194 + expterm * (one - bw%c3 * tstar**2 * invtsq)
199 call
polin2(bp,bp%TABLE%tsurf00,bp%TABLE%press00,bp%TABLE%heatflux00,&
200 bp%TABLE%nx_table,bp%TABLE%ny_table,bw%Ts,bw%p,bw%fs,jj,kk)
201 call
polin2(bp,bp%TABLE%tsurf00, bp%TABLE%press00, bp%TABLE%heatflux00,&
202 bp%TABLE%nx_table, bp%TABLE%ny_table, bw%Ts+half*bp%TABLE&
203 %small_1, bw%p, tmp2,jj,kk)
204 call
polin2(bp,bp%TABLE%tsurf00, bp%TABLE%press00, bp%TABLE%heatflux00,&
205 bp%TABLE%nx_table, bp%TABLE%ny_table, bw%Ts-half*bp%TABLE&
206 %small_1, bw%p, tmp1,jj,kk)
207 bw%fsprime = (tmp2-tmp1) / bp%TABLE%small_1
212 bw%fs = bw%Qc/bw%lamc
213 bw%fsprime = bw%Qcprime / bw%lamc
237 if(bp%TABUSE == 0)
then
238 bw%rb = bp%Ac * exp( - bp%ec_ru / bw%Ts)
239 bw%alfa_eff = bp%alfac
242 call
polin2(bp,bp%TABLE%tsurf00,bp%TABLE%press00,bp%TABLE%rb00, &
243 bp%TABLE%nx_TABLE,bp%TABLE%ny_table,bw%Ts,bw%p,bw%rb,jj,kk)
244 call
polin2(bp,bp%TABLE%tsurf00,bp%TABLE%press00,bp%TABLE%alph00, &
245 bp%TABLE%nx_TABLE,bp%TABLE%ny_table,bw%Ts,bw%p,bw%alfa_eff,jj,kk)
268 if (bp%TABUSE == 0)
then
269 bw%Tstar = one/ ( bw%c2 - bw%c3 * (bw%c1-one/bw%Ts) )
270 if ( bw%Ts > bw%Ts0 .AND. bw%Ts > bw%Tslimit ) bw%Tstar = bp%Tstar0
273 call
polin2(bp,bp%TABLE%tsurf00,bp%TABLE%press00,bp%TABLE%Tgas00,&
274 bp%TABLE%nx_table,bp%TABLE%ny_table,bw%Ts,bw%p,bw%Tstar,jj,kk)
void zero()
Sets all entries to zero (more efficient than assignement).
static void add(const Attribute *x, const Attribute *y, Attribute *z)
Operation wrapper for addition.
subroutine polin2(bp, x1a, x2a, y12a, m, n, x1, x2, y, j, k)
subroutine burn_get_burning_rate1d(bp, delt, P, To, Tn, Qc, Qc_old, Qr, Qr_old, rhoc, Toa, rb, fr, bflag, Tnp1, Tflame, coor)
*********************************************************************Illinois Open Source License ****University of Illinois NCSA **Open Source License University of Illinois All rights reserved ****Developed free of to any person **obtaining a copy of this software and associated documentation to deal with the Software without including without limitation the rights to merge