	Program Test_Panel		!sprawdza procedure PANEL
	real*8 panel
	G=PANEL(5,1000d0,209.18d0)
	print*,' Glebokosc panelu Nr 5 w punkcie (1000,209.18):',G
	do 1 i=0,0!1,7
1	G=PANEL(i,xo,yo)
	end

	double precision function PANEL(NRpan,xo,yo)

c Oblicza odleglosc paraboloidalnego panelu od plaszczyzny odniesienia
c opartej na jego naroznikach w funkcji prostokatnych wspolrzednych
c (xo,yo) na tej plaszczyznie. Jeden z dwoch (lewy) zewnetrznych
c (bardziej odleglych) naroznikow ma wspolrzedne (Xmax,0), os yo
c biegnie w kierunku drugiego zewnetrznego naroznika, zas os xo - na
c zewnatrz (jednak przy pomiarach podczas produkcji paneli xo liczono
c od zewnetrznego naroznika do wewnatrz, co trzeba uwzglednic
c analizujac dokumentacje tamtych pomiarow). Wymiary dlugosci (w tym
c xo, yo i PANEL) sa wyrazone w mm. NRpan: od 1 (zewnetrzny pierscien)
c do 7 (najblizej srodka RT32).

c Rownanie paraboloidu z = r**2/c = (x**2 + y**2)/c, gdzie c = 4f

	implicit real*8 (a-h,o-z)
	dimension rj(0:7),nj(7), corr(8)
c Zalozenie bardzo waskich paneli (du¿ej ich liczby, nj) bardzo dobrze
c przybliza przypadek jednowymiarowej glebokosci (wzgledem cieciwy):
c	data c/44.8d3/,nj/7*10000/
	data c/44.8d3/,nj/4*64,32,32,16/	! rzeczywisty RT32

c Promienie okregow ograniczajacych pierscienie paneli obliczone przez
c podzielenie luku wzdluz 'poludnika' miedzy r = 1.6 i 16 m na 7
c rownych czesci za pomoca funkcji RADIUS(sr)
	data rj/16d3,14142.91d0,12213.76d0,10212.36d0,8141.38d0,
     * 6007.36d0,3821.53d0,16d2/,NR/0/

	if(NRpan.eq.0) then
	do 100 i=1,8
100	corr(i) = dsqrt(1+(2*rj(i-1)/c)**2)
	write(*,'(1x,a,8i7/2(1x,a,8f7.3/))') ' Nr panelu ',(i,i=0,7)
     *,' Promien [m]  ', (rj(i)/1000,i=0,7)
     *,' Wspolczynnik ', corr
	return
	endif

	 if(NRpan.lt.1.or.NRpan.gt.7) then
	  print*,' Niema panelu o numerze', NRpan,' !!!'
	  return
	 endif
	if(NR.eq.NRpan) go to 1
	NR=NRpan
c odleglosci brzegow (tez naroznikow) paneli od osi paraboloidy [mm]
	r0=rj(NRpan)
	r1=rj(NRpan-1)
c P - polowa kata rozwarcia panelu = 180stopni/(liczba paneli)
	cosP=cos(3.1415926536d0/nj(NRpan))
c Tangens, kosinus i sinus nachylenia panelu wzgl. plaszcz. (x,y),
c tj. plaszczyzny prostopadlej do osi symetrii paraboloidu, z.
	tgE=(r0+r1)/(c*cosP)
	cosE=1/sqrt(1+tgE*tgE)
	sinE=tgE*cosE
	dyo=r1*sqrt(1-cosP*cosP)
c Wymiary panelu: odstep zewnetrznych (Ymax) i wewnetrznych (YmaxP)
c naroznikow, odleglosc prostych laczacych zewnetrzne i wewnetrzne
c narozniki (Xmax) oraz najwieksza odleglosc panelu od plaszczyzny
c odniesienia (Gmax)

	Xmax=(r1-r0)*sqrt((r0+r1)**2/c/c+cosP**2)
	YmaxP=2*dyo*r0/r1	!tj. Ymax*r0/r1
	Gmax=(c/4*tgE-r1*cosP)*sinE+r1*r1/c*cosE
	write(*,'(a,4(f8.2,a),f6.2)')' Ymax=',2*dyo,' Ymax''=',YmaxP,
     * '  Xmax=',Xmax,'  Glebokosc=',Gmax,' [mm]',
     *datan(tgE)*180/3.1415926536d0

c Powyzszy wzor na glebokosc Gmax uzyskuje sie z zaleznosci odleglosci
c od paraboloidu do plaszczyzny odniesienia w funkcji x (i y=yo):
c 	Gleb(x)=sinE*(x-r1*cosP)-(x**2+yo**2-r1**2)/c*cosE
c Przy P=0, Gleb'(x)= sinE-2x*cosE/c = 0 --> x_max=tgE*c/2

c Wspolrzedne (x0,y0) na plaszczyznie odniesienia maja poczatek
c y0 na osi symetrii panelu i x0 liczone od zewnatrz do srodka
c 1	x0=xo		! gdy xo liczone z zewnatrz do wewnatrz
  1	x0=Xmax-xo	! gdy xo liczone od wewnatrz na zewnatrz
c 2	y0=yo		! gdy yo liczone od srodka panelu
  2	y0=yo-dyo
c Obliczam wartosc z0, tj. z(x=0,y dowolne), dla prostopadlej do 
c plaszczyzny odniesienia (dla ktorej z=z0-x/tgE). Dla tej prostej
c musi byc: z=r1**2/c-x0*sinE i x=r1*cosP-x0*cosE, zatem
	cE=c/(tgE+tgE)
	z0=r1*(r1+(cE+cE)*cosP)/c-x0/sinE
c Prostopadla przebija panel w punkcie (xp,y0,zp) takim, ze:
c 	z = (xp**2+y0**2)/c 	 i 	z = z0-xp/tgE
c stad (odejmujac stronami):	xp**2+c/tgE*xp+y0**2-z0*c = 0
c	sqrt(del)/2 = sqrt((c/(2*tgE))**2-(y0*y0-c*z0))
c		 xp = sqrt(del)/2-c/(2*tgE)
c (rozwiazanie na xp>0). Wspolrzedne punktu na panelu wynosza wiec
	xp=sqrt(cE*cE-y0*y0+c*z0)-cE
	zp=(xp*xp+y0*y0)/c
c Obliczam odleglosc punktu na panelu od plaszczyzny odniesienia.
c Na plaszcz. odniesienia jest:	x=r1*cosP-x0*cosE
c    			oraz    z=r1**2/c-x0*sinE
	dx=xp-(r1*cosP-x0*cosE)
	dz=zp-(r1*r1/c-x0*sinE)
	PANEL=sign(sqrt(dx*dx+dz*dz),dx)
	end

c----------------------------------------------------------------------
