Skip to content
Snippets Groups Projects
Commit f9cf182e authored by a_medvedev's avatar a_medvedev
Browse files

тест машинной точности

parent 3200361e
No related branches found
No related tags found
No related merge requests found
...@@ -175,11 +175,6 @@ do t = 1, ntime ...@@ -175,11 +175,6 @@ do t = 1, ntime
! вывод данных: ! вывод данных:
if (hour /= hour_mem) then
hour_mem = hour
endif
if (month /= month_mem) then
print'(" ",i4.4,"-",i2.2,"-",i2.2," ",i2.2,":",i2.2,":",i2.2)', year, month, day, hour, minute, second print'(" ",i4.4,"-",i2.2,"-",i2.2," ",i2.2,":",i2.2,":",i2.2)', year, month, day, hour, minute, second
print*, adc6(i0,j0,nv), adc8(i0,j0,nv), adc8b(i0,j0,nv) print*, adc6(i0,j0,nv), adc8(i0,j0,nv), adc8b(i0,j0,nv)
print*, Cveg(i0,j0), Csoil(i0,j0), Csoilb(i0,j0), Catm(i0,j0) print*, Cveg(i0,j0), Csoil(i0,j0), Csoilb(i0,j0), Catm(i0,j0)
...@@ -188,18 +183,25 @@ do t = 1, ntime ...@@ -188,18 +183,25 @@ do t = 1, ntime
if (pool_mem(i0,j0,n_Csoilb) > 0) print*, (pool(i0,j0,n_Csoilb) - pool_mem(i0,j0,n_Csoilb))/pool_mem(i0,j0,n_Csoilb) if (pool_mem(i0,j0,n_Csoilb) > 0) print*, (pool(i0,j0,n_Csoilb) - pool_mem(i0,j0,n_Csoilb))/pool_mem(i0,j0,n_Csoilb)
print*, 'eps = ', (adc6(i0,j0,nv) - Cveg(i0,j0)) / adc6(i0,j0,nv) * 100, '%' print*, 'eps = ', (adc6(i0,j0,nv) - Cveg(i0,j0)) / adc6(i0,j0,nv) * 100, '%'
print*, '---' print*, '---'
print*, 'fpsn', fpsn(nv), fpsn_new(i0,j0)/umol2kg print*, 'fpsn', fpsn(nv), fpsn_new(i0,j0)!/umol2kg
print*, 'frg', frg(nv), frg_new(i0,j0)/umol2kg print*, 'frg', frg(nv), frg_new(i0,j0)!/umol2kg
print*, 'frmf', frmf(nv), frmf_new(i0,j0)/umol2kg print*, 'frmf', frmf(nv), frmf_new(i0,j0)!/umol2kg
print*, 'frms', frms(nv), frms_new(i0,j0)/umol2kg print*, 'frms', frms(nv), frms_new(i0,j0)!/umol2kg
print*, 'frmr', frmr(nv), frmr_new(i0,j0)/umol2kg print*, 'frmr', frmr(nv), frmr_new(i0,j0)!/umol2kg
print*, 'fmicr', fmicr(nv), fmicr_new(i0,j0)/umol2kg print*, 'fmicr', fmicr(nv), fmicr_new(i0,j0)!/umol2kg
print*, 'fmicrb', fmicrb(nv), fmicrb_new(i0,j0)/umol2kg print*, 'fmicrb', fmicrb(nv), fmicrb_new(i0,j0)!/umol2kg
print*, 'dv68', dv68(nv)/umol2kg, dv68_new(i0,j0)/umol2kg print*, 'dv68', dv68(nv)/umol2kg, dv68_new(i0,j0)/umol2kg
print*, 'ddc6a', ddc6a(nv)/umol2kg/dt, ddc6a_new(i0,j0)/umol2kg print*, 'ddc6a', ddc6a(nv)/dt/umol2kg, ddc6a_new(i0,j0)/umol2kg
print*, 'ddc6b', ddc6b(nv)/umol2kg/dt, ddc6b_new(i0,j0)/umol2kg print*, 'ddc6b', ddc6b(nv)/dt/umol2kg, ddc6b_new(i0,j0)/umol2kg
print*, 'ddc8', ddc8(nv)/umol2kg/dt, ddc8_new(i0,j0)/umol2kg print*, 'ddc8', ddc8(nv)/dt/umol2kg, ddc8_new(i0,j0)/umol2kg
print* print*
pause
if (hour /= hour_mem) then
hour_mem = hour
endif
if (month /= month_mem) then
month_mem = month month_mem = month
endif endif
......
...@@ -5,7 +5,7 @@ implicit none ...@@ -5,7 +5,7 @@ implicit none
! ----------------------------------------------- Constant values ------------------------------------------------ ! ----------------------------------------------- Constant values ------------------------------------------------
! физические константы: ! физические константы:
integer, parameter :: ti = 60*60*24 !< number of second per day integer, parameter :: ti = 60*60*24 !< number of second per day
real, parameter :: pi = 4.*atan(1.) !< pi real, parameter :: pi = 3.1415!4.*atan(1.) !< pi
real, parameter :: hPa2Pa = 100. !< гектопаскали в паскали real, parameter :: hPa2Pa = 100. !< гектопаскали в паскали
real, parameter :: umol2kg = 12.*1.e-9 !< микромоли в килограммы углерода real, parameter :: umol2kg = 12.*1.e-9 !< микромоли в килограммы углерода
real, parameter :: Tz = 0. !< точка замерзания воды, С real, parameter :: Tz = 0. !< точка замерзания воды, С
...@@ -227,7 +227,8 @@ contains ...@@ -227,7 +227,8 @@ contains
laisha(k) = elai(k)*fsha(k) laisha(k) = elai(k)*fsha(k)
fpsn(k)=amndf(k)*(psnsun(k)*laisun(k)+psnsha(k)*laisha(k)) fpsn(k)=amndf(k)*(psnsun(k)*laisun(k)+psnsha(k)*laisha(k))
f = fpsn(k) * veget_ich(k)*amsq*(1.0-sq(4)) * 12.e-9 ! f = fpsn(k) * veget_ich(k)*amsq*(1.0-sq(4)) * umol2kg
f = fpsn(k)
end function end function
......
...@@ -42,7 +42,7 @@ integer, parameter :: n3 = 1 !< Number of respiration function ...@@ -42,7 +42,7 @@ integer, parameter :: n3 = 1 !< Number of respiration function
integer, parameter :: n4 = 1 !< Number of litterfall function integer, parameter :: n4 = 1 !< Number of litterfall function
! --- ! ---
real, parameter :: pi_loc = 4.*atan(1.) real, parameter :: pi_loc = 3.1415!4.*atan(1.)
real, parameter :: r_earth_loc = 6371000. real, parameter :: r_earth_loc = 6371000.
integer, parameter :: nv1 = 13 !< число типов поверхности integer, parameter :: nv1 = 13 !< число типов поверхности
...@@ -420,10 +420,13 @@ select case (n1) ...@@ -420,10 +420,13 @@ select case (n1)
DO J = j0, j1 DO J = j0, j1
DO I = i0, i1 DO I = i0, i1
! IF(OLIM(I,J).EQ.1) THEN ! IF(OLIM(I,J).EQ.1) THEN
DO NVV=1,NV2 ! DO NVV=1,NV2
SUMS(1)=SUMS(1)+ADC6(I,J,NVV)*DEFR(NVV)*AREA*1.E-12 NVV = 3
SUMS(2)=SUMS(2)+ADC8(I,J,NVV)*SOER(NVV)*AREA*1.E-12 ! SUMS(1)=SUMS(1)+ADC6(I,J,NVV)*DEFR(NVV)*AREA*1.E-12
END DO ! SUMS(2)=SUMS(2)+ADC8(I,J,NVV)*SOER(NVV)*AREA*1.E-12
SUMS(1)=SUMS(1)+DEFR(NVV)*AREA!*1.E-12
SUMS(2)=SUMS(2)+SOER(NVV)*AREA!*1.E-12
! END DO
! END IF ! END IF
END DO END DO
END DO END DO
...@@ -599,22 +602,28 @@ select case (n1) ...@@ -599,22 +602,28 @@ select case (n1)
defor0b = defor0-defor0a defor0b = defor0-defor0a
if (sc6 /= 0.) then if (sc6 /= 0.) then
ddc6a(i) = dc6(i) * defr(i) * defor0a * adefr * dt / yrs / sc6 ! ddc6a(i) = dc6(i) * defr(i) * defor0a * adefr * dt / yrs / sc6
ddc6b(i) = dc6(i) * defr(i) * defor0b * adefr * dt / yrs / sc6 ! ddc6b(i) = dc6(i) * defr(i) * defor0b * adefr * dt / yrs / sc6
ddc6a(i) = defr(i) / sc6 * defor0a * adefr * dt / yrs
ddc6b(i) = defr(i) / sc6 * defor0b * adefr * dt / yrs
else else
ddc6a(i) = 0. ddc6a(i) = 0.
ddc6b(i) = 0. ddc6b(i) = 0.
endif endif
if (sc8 /= 0.) then if (sc8 /= 0.) then
ddc8(i) = dc8(i) * soer(i) * defor0 * (1.0 - adefr) * dt / yrs / sc8 ! ddc8(i) = dc8(i) * soer(i) * defor0 * (1.0 - adefr) * dt / yrs / sc8
ddc8(i) = soer(i) / sc8 * defor0 * (1.0 - adefr) * dt / yrs
else else
ddc8(i) = 0. ddc8(i) = 0.
endif endif
ddc6a(i) = ddc6a(i) * area / (4.*pi_loc*r_earth_loc**2) ! ddc6a(i) = ddc6a(i) * area / (4.*pi_loc*r_earth_loc**2)
ddc6b(i) = ddc6b(i) * area / (4.*pi_loc*r_earth_loc**2) ! ddc6b(i) = ddc6b(i) * area / (4.*pi_loc*r_earth_loc**2)
ddc8(i) = ddc8(i) * area / (4.*pi_loc*r_earth_loc**2) ! ddc8(i) = ddc8(i) * area / (4.*pi_loc*r_earth_loc**2)
ddc6a(i) = ddc6a(i) * area / (4.*pi_loc*r_earth_loc**2) * 1.e+12
ddc6b(i) = ddc6b(i) * area / (4.*pi_loc*r_earth_loc**2) * 1.e+12
ddc8(i) = ddc8(i) * area / (4.*pi_loc*r_earth_loc**2) * 1.e+12
case default case default
ddc6a(i) = 1. ddc6a(i) = 1.
...@@ -649,9 +658,12 @@ select case (n3) ...@@ -649,9 +658,12 @@ select case (n3)
amns = stemb(i)/znam !< Tech variable amns = stemb(i)/znam !< Tech variable
amnr = rootb(i)/znam !< Tech variable amnr = rootb(i)/znam !< Tech variable
frmf(i) = 1.00 * amndf(i) * rmf25(i) * tlai(i) * fnf * tf * rf * btran(i) ! frmf(i) = 1.00 * amndf(i) * rmf25(i) * tlai(i) * fnf * tf * rf * btran(i)
frms(i) = 0.35 * amndf(i) * rms25(i) * dc6(i) * amns * tf * rf ! frms(i) = 0.35 * amndf(i) * rms25(i) * dc6(i) * amns * tf * rf
frmr(i) = 0.35 * amndf(i) * rmr25(i) * dc6(i) * amnr * tf * rf ! frmr(i) = 0.35 * amndf(i) * rmr25(i) * dc6(i) * amnr * tf * rf
frmf(i) = 1.00 * amndf(i) * rmf25(i) * tlai(i) * fnf * rf * btran(i)
frms(i) = 0.35 * amndf(i) * rms25(i) * amns * rf
frmr(i) = 0.35 * amndf(i) * rmr25(i) * amnr * rf
frm(i) = frmf(i) + frms(i) + frmr(i) frm(i) = frmf(i) + frms(i) + frmr(i)
! Growth respiration ! Growth respiration
...@@ -671,8 +683,10 @@ select case (n3) ...@@ -671,8 +683,10 @@ select case (n3)
end if end if
! fswfst = fsw * fst ! fswfst = fsw * fst
fmicr(i) = 1.5 * fsw * fst * amrp(i) * dc8(i) ! fmicr(i) = 1.5 * fsw * fst * amrp(i) * dc8(i)
fmicrb(i) = 1.5 * fsw * fst * amrp(i) * dc8b(i) * cv81b ! fmicrb(i) = 1.5 * fsw * fst * amrp(i) * dc8b(i) * cv81b
fmicr(i) = 1.5 * fsw * amrp(i)
fmicrb(i) = 1.5 * fsw * amrp(i) * cv81b
!end do !end do
case default case default
...@@ -687,7 +701,8 @@ end select ...@@ -687,7 +701,8 @@ end select
! ----------------------------------------------------- Litterfall --------------------------------------------------- ! ----------------------------------------------------- Litterfall ---------------------------------------------------
select case (n4) select case (n4)
case (1) !Type 1 (INMCM) case (1) !Type 1 (INMCM)
dv68(i) = dc6(i) / (al5(i) * yrs) ! dv68(i) = dc6(i) / (al5(i) * yrs)
dv68(i) = 1. / (al5(i) * yrs)
case default case default
dv68(i) = 1. dv68(i) = 1.
end select end select
......
...@@ -86,7 +86,8 @@ contains ...@@ -86,7 +86,8 @@ contains
! dv68(i) = dc6(i) / (al5(i) * yrs) ! dv68(i) = dc6(i) / (al5(i) * yrs)
f = 1 f = 1
nmult(n,m,f) = 1 nmult(n,m,f) = 1
call set_fun(n, m, f, 1, 'lin', x = Cveg, k = 1./(al5(nv)*yrs), b = 0.) ! call set_fun(n, m, f, 1, 'lin', x = Cveg, k = 1./(al5(nv)*yrs), b = 0.)
call set_fun(n, m, f, 1, 'const', c = 1./(al5(nv)*yrs))
route(n,m,f) = +1 route(n,m,f) = +1
dv68_new(i0:i1,j0:j1) => flux(:,:,n,m,f) dv68_new(i0:i1,j0:j1) => flux(:,:,n,m,f)
...@@ -116,10 +117,12 @@ contains ...@@ -116,10 +117,12 @@ contains
call set_fun(n, m, f, 3, 'const', c = rmf25(nv)) call set_fun(n, m, f, 3, 'const', c = rmf25(nv))
call set_fun(n, m, f, 4, 'const_fict', c = tlai(nv)) call set_fun(n, m, f, 4, 'const_fict', c = tlai(nv))
call set_fun(n, m, f, 5, 'const', c = min(foln(nv)/max(folnmx(nv),1.e-6),1.)) call set_fun(n, m, f, 5, 'const', c = min(foln(nv)/max(folnmx(nv),1.e-6),1.))
call set_fun(n, m, f, 6, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16) ! call set_fun(n, m, f, 6, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16)
call set_fun(n, m, f, 6, 'const', c = 1.)
call set_fun(n, m, f, 7, 'step', x = igs_new, x0 = 0., y0 = 0.5, y1 = 1.) call set_fun(n, m, f, 7, 'step', x = igs_new, x0 = 0., y0 = 0.5, y1 = 1.)
call set_fun(n, m, f, 8, 'lin', x = btran_new, k = 1., b = 0.) call set_fun(n, m, f, 8, 'lin', x = btran_new, k = 1., b = 0.)
call set_fun(n, m, f, 9, 'const', c = umol2kg * veget_ich(nv)*amsq*(1.0-sq(4))) ! call set_fun(n, m, f, 9, 'const', c = umol2kg * veget_ich(nv)*amsq*(1.0-sq(4)))
call set_fun(n, m, f, 9, 'const', c = 1.)
route(n,m,f) = +1 route(n,m,f) = +1
frmf_new(i0:i1,j0:j1) => flux(:,:,n,m,f) frmf_new(i0:i1,j0:j1) => flux(:,:,n,m,f)
f = 4 f = 4
...@@ -127,10 +130,13 @@ contains ...@@ -127,10 +130,13 @@ contains
call set_fun(n, m, f, 1, 'const', c = 0.35) call set_fun(n, m, f, 1, 'const', c = 0.35)
call set_fun(n, m, f, 2, 'lin', x = amndf3(:,:,nv), k = 1., b = 0.) call set_fun(n, m, f, 2, 'lin', x = amndf3(:,:,nv), k = 1., b = 0.)
call set_fun(n, m, f, 3, 'const', c = rms25(nv)) call set_fun(n, m, f, 3, 'const', c = rms25(nv))
call set_fun(n, m, f, 4, 'lin', x = Cveg, k = stemb(nv)/(stemb(nv)+rootb(nv)), b = 0.) ! call set_fun(n, m, f, 4, 'lin', x = Cveg, k = stemb(nv)/(stemb(nv)+rootb(nv)), b = 0.)
call set_fun(n, m, f, 5, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16) call set_fun(n, m, f, 4, 'const', c = stemb(nv)/(stemb(nv)+rootb(nv)))
! call set_fun(n, m, f, 5, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16)
call set_fun(n, m, f, 5, 'const', c = 1.)
call set_fun(n, m, f, 6, 'step', x = igs_new, x0 = 0., y0 = 0.5, y1 = 1.) call set_fun(n, m, f, 6, 'step', x = igs_new, x0 = 0., y0 = 0.5, y1 = 1.)
call set_fun(n, m, f, 7, 'const', c = umol2kg) ! call set_fun(n, m, f, 7, 'const', c = umol2kg)
call set_fun(n, m, f, 7, 'const', c = 1.)
route(n,m,f) = +1 route(n,m,f) = +1
frms_new(i0:i1,j0:j1) => flux(:,:,n,m,f) frms_new(i0:i1,j0:j1) => flux(:,:,n,m,f)
f = 5 f = 5
...@@ -138,10 +144,13 @@ contains ...@@ -138,10 +144,13 @@ contains
call set_fun(n, m, f, 1, 'const', c = 0.35) call set_fun(n, m, f, 1, 'const', c = 0.35)
call set_fun(n, m, f, 2, 'lin', x = amndf3(:,:,nv), k = 1., b = 0.) call set_fun(n, m, f, 2, 'lin', x = amndf3(:,:,nv), k = 1., b = 0.)
call set_fun(n, m, f, 3, 'const', c = rmr25(nv)) call set_fun(n, m, f, 3, 'const', c = rmr25(nv))
call set_fun(n, m, f, 4, 'lin', x = Cveg, k = rootb(nv)/(stemb(nv)+rootb(nv)), b = 0.) ! call set_fun(n, m, f, 4, 'lin', x = Cveg, k = rootb(nv)/(stemb(nv)+rootb(nv)), b = 0.)
call set_fun(n, m, f, 5, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16) call set_fun(n, m, f, 4, 'const', c = rootb(nv)/(stemb(nv)+rootb(nv)))
! call set_fun(n, m, f, 5, 'exp', x = Temp, a = 1., k = 0.1*log(arm(nv)), b = Kelvin0-298.16)
call set_fun(n, m, f, 5, 'const', c = 1.)
call set_fun(n, m, f, 6, 'step', x = igs_new, x0 = 0., y0 = 0.5, y1 = 1.) call set_fun(n, m, f, 6, 'step', x = igs_new, x0 = 0., y0 = 0.5, y1 = 1.)
call set_fun(n, m, f, 7, 'const', c = umol2kg) ! call set_fun(n, m, f, 7, 'const', c = umol2kg)
call set_fun(n, m, f, 7, 'const', c = 1.)
route(n,m,f) = +1 route(n,m,f) = +1
frmr_new(i0:i1,j0:j1) => flux(:,:,n,m,f) frmr_new(i0:i1,j0:j1) => flux(:,:,n,m,f)
...@@ -155,11 +164,14 @@ contains ...@@ -155,11 +164,14 @@ contains
call set_fun(n, m, f, 1, 'const', c = 1.5) call set_fun(n, m, f, 1, 'const', c = 1.5)
call set_fun(n, m, f, 2, 'mm', x = thetaSoilTop, k = 1., b = 0.20) call set_fun(n, m, f, 2, 'mm', x = thetaSoilTop, k = 1., b = 0.20)
call set_fun(n, m, f, 3, 'hyp', x = thetaSoilTop, k = 0.23, b = 0.23) call set_fun(n, m, f, 3, 'hyp', x = thetaSoilTop, k = 0.23, b = 0.23)
call set_fun(n, m, f, 4, 'exp', x = Tsoil(:,:,ms+1), a = 1., k = 0.1*log(2.), b = Kelvin0-283.16) ! call set_fun(n, m, f, 4, 'exp', x = Tsoil(:,:,ms+1), a = 1., k = 0.1*log(2.), b = Kelvin0-283.16)
my_label(n,m,f,4) = 'fst' ! my_label(n,m,f,4) = 'fst'
call set_fun(n, m, f, 4, 'const', c = 1.)
call set_fun(n, m, f, 5, 'const', c = amrp(nv)) call set_fun(n, m, f, 5, 'const', c = amrp(nv))
call set_fun(n, m, f, 6, 'lin', x = Csoil, k = 1., b = 0.) ! call set_fun(n, m, f, 6, 'lin', x = Csoil, k = 1., b = 0.)
call set_fun(n, m, f, 7, 'const', c = umol2kg) call set_fun(n, m, f, 6, 'const', c = 1.)
! call set_fun(n, m, f, 7, 'const', c = umol2kg)
call set_fun(n, m, f, 7, 'const', c = 1.)
route(n,m,f) = +1 route(n,m,f) = +1
fmicr_new(i0:i1,j0:j1) => flux(:,:,n,m,f) fmicr_new(i0:i1,j0:j1) => flux(:,:,n,m,f)
...@@ -173,12 +185,15 @@ contains ...@@ -173,12 +185,15 @@ contains
call set_fun(n, m, f, 1, 'const', c = 1.5) call set_fun(n, m, f, 1, 'const', c = 1.5)
call set_fun(n, m, f, 2, 'mm', x = thetaSoilTop, k = 1., b = 0.20) call set_fun(n, m, f, 2, 'mm', x = thetaSoilTop, k = 1., b = 0.20)
call set_fun(n, m, f, 3, 'hyp', x = thetaSoilTop, k = 0.23, b = 0.23) call set_fun(n, m, f, 3, 'hyp', x = thetaSoilTop, k = 0.23, b = 0.23)
call set_fun(n, m, f, 4, 'exp', x = Tsoil(:,:,ms+1), a = 1., k = 0.1*log(2.), b = Kelvin0-283.16) ! call set_fun(n, m, f, 4, 'exp', x = Tsoil(:,:,ms+1), a = 1., k = 0.1*log(2.), b = Kelvin0-283.16)
my_label(n,m,f,4) = 'fst' ! my_label(n,m,f,4) = 'fst'
call set_fun(n, m, f, 4, 'const', c = 1.)
call set_fun(n, m, f, 5, 'const', c = amrp(nv)) call set_fun(n, m, f, 5, 'const', c = amrp(nv))
call set_fun(n, m, f, 6, 'lin', x = Csoilb, k = 1., b = 0.) ! call set_fun(n, m, f, 6, 'lin', x = Csoilb, k = 1., b = 0.)
call set_fun(n, m, f, 6, 'const', c = 1.)
call set_fun(n, m, f, 7, 'const', c = cv81b) call set_fun(n, m, f, 7, 'const', c = cv81b)
call set_fun(n, m, f, 8, 'const', c = umol2kg) ! call set_fun(n, m, f, 8, 'const', c = umol2kg)
call set_fun(n, m, f, 8, 'const', c = 1.)
route(n,m,f) = +1 route(n,m,f) = +1
fmicrb_new(i0:i1,j0:j1) => flux(:,:,n,m,f) fmicrb_new(i0:i1,j0:j1) => flux(:,:,n,m,f)
...@@ -288,8 +303,10 @@ contains ...@@ -288,8 +303,10 @@ contains
endif endif
! --- sc6, sc8 --- ! --- sc6, sc8 ---
dfr_weight(ii,jj) = pool(ii,jj,n_Cveg) * defr(nv) * area ! dfr_weight(ii,jj) = pool(ii,jj,n_Cveg) * defr(nv) * area
ers_weight(ii,jj) = pool(ii,jj,n_Csoil) * soer(nv) * area ! ers_weight(ii,jj) = pool(ii,jj,n_Csoil) * soer(nv) * area
dfr_weight(ii,jj) = defr(nv) * area
ers_weight(ii,jj) = soer(nv) * area
enddo enddo
enddo enddo
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment