[updated 14.Dec.1995]

Librairie-d'application appl_rw3d > Fichier green.f

Qui appelle green ?

line
        subroutine green (tabcsg,cop1,com1,g,nr,tabass,mctabg,eta)
line
 	com : coordonees de M
 	cop : coordonees de P               
 	g  : valeur,derivee x,derivee y,derivee z
 	nr  : numro de region pour interpollation
line
 	TABASS doit etre initialise a zero
 	a partir de nta0+1
line
 	structure de tabass :
  nta0 +1	valeur minimale rencontree de x
 	2	valeur minimale rencontree de y
 	3	valeur minimale rencontree de z
 	4	valeur maximale rencontree de x
 	5	valeur maximale rencontree de y
 	6	valeur maximale rencontree de z
 	7	nombre de depassements en x
 	8	nombre de depassements en y
 	9	nombre de depassements en z
 	10	vague lointaine :
 	|       ---------------
        |	nombre de pts calcules par methode  i-10
 	|		0 : pas de calcul
 	|		1 : serie convergente
 	|		2 : serie asymptotique
 	|		3 : romberg
 	14		4 : majoration
 	21	vague proche :
 	|	------------
 	24	nombre de pts de chaque region i-20
line

	parameter (nta0=3)

	real cox(3),wg(6),ng(4),g(*),glap(4),coa(3)
	real com1(3),cop1(3)
	real coxmax(3)
	complex tabass
	real tabcsg
	dimension tabcsg (*)
	dimension tabass (*) 
	complex zero
	dimension temps(2)
	common/time/tentot(2)
	common/numa/nbapg

line
 	test fonction de green rapide
line
	if(.false.) then

	 gsu2    =tabcsg(1)
	 x=(cop1(1)-com1(1)) *gsu2
	 y=(cop1(2)-com1(2)) *gsu2
	 z=(cop1(3)-com1(3)) *gsu2

	 r=sqrt(x*x+y*y+z*z)
	 g(1)=r
	 g(2)=r
	 g(3)=r
	 g(4)=r

	 return
	endif
C
C
c       INCLUDE 'OVERFLOW'
C
c       ROYAL1(1) = COM1(1)
c       ROYAL1(2) = COM1(2)
c       ROYAL1(3) = COM1(3)
c       ROYAL2(1) = COP1(1)
c       ROYAL2(2) = COP1(2)
c       ROYAL2(3) = COP1(3)
C
 !	call dtime(temps)
	nbapg=nbapg+1

	usqpi=.0795774715459
	coxmax(1)=100
	coxmax(2)=15 
	coxmax(3)=0.2
	zero=cmplx(0,0)
	un=cmplx(1,0)
	
	gsu2    =tabcsg(1)

	x=     (cop1(1)-com1(1)) *gsu2
	y=     (cop1(2)-com1(2)) *gsu2
	z=-abs((cop1(3)+com1(3)))*gsu2

	
	cox(1) = x
	cox(2) = y
	cox(3) = z
	do 1 i=1,2
	if(abs(cox(i)).gt.coxmax(i)) then
		tabass(nta0+6+i)= tabass(nta0+6+i)+un
		if (tabass(nta0+6+i).eq.un) then
		write(6,*) '*Fonction de Green* '//
     *		': Valeur de M-P hors limites :'
		write(6,*) '	',cox(1),cox(2),cox(3)
	endif
	endif
1 	continue
	i=3
	if(abs(cox(i)).lt.coxmax(i)) then
		tabass(nta0+6+i)= tabass(nta0+6+i)+un
		if (tabass(nta0+6+i).eq.un) then
		write(6,*) '*Fonction de Green* '//
     *		': Valeur de M-P hors limites :'
		write(6,*) '	',cox(1),cox(2),cox(3)
		call baise('Augmentez la profondeur ou '
     *		                  //'diminuez la vitesse')
	endif
	endif

  statistiques sur min et max des arguments
  -----------------------------------------
 	tabass(nta0+1)=cmplx(min(real(tabass(nta0+1)),x))
 	tabass(nta0+2)=cmplx(min(real(tabass(nta0+2)),y))
 	tabass(nta0+3)=cmplx(min(real(tabass(nta0+3)),z))
 	tabass(nta0+4)=cmplx(max(real(tabass(nta0+4)),x))
 	tabass(nta0+5)=cmplx(max(real(tabass(nta0+5)),y))
 	tabass(nta0+6)=cmplx(max(real(tabass(nta0+6)),z))

  solution elementaire du laplacien
  ---------------------------------
c       ITYPE = 1
        call glaplg(com1,cop1,glap)

  vague proche
  ------------
	coa(1)=abs(cox(1))
	coa(2)=abs(cox(2))
	coa(3)=-abs(cox(3))
c       ITYPE = 2
	call eltq2d 	(coa,ng,nr,mctabg)
	if (cox(1).le.0) ng(2)=-ng(2)
	if (cox(2).gt.0) ng(3)=-ng(3)
	m=20+nr
 	tabass(nta0+m)=tabass(nta0+m)+un

  vague lointaine
  ---------------
c       ITYPE = 3
	call gwd 	(cox,wg,met,eta)
	m=10+met/10
 	tabass(nta0+m)=tabass(nta0+m)+un
	if (cox(2).gt.0) wg(3)=-wg(3)

	g2su4=gsu2*gsu2

	g(1)=(glap(1)+(+2*gsu2 *ng(1)+gsu2 *wg(1)))*usqpi
	g(2)=(glap(2)+(+2*g2su4*ng(2)+g2su4*wg(2)))*usqpi
	g(3)=(glap(3)+(-2*g2su4*ng(3)-g2su4*wg(3)))*usqpi
	g(4)=(glap(4)+(+2*g2su4*ng(4)+g2su4*wg(4)))*usqpi

 111	format (3f12.5)
 	print111,cox(1),cox(2),cox(3)

 !	call dtime(temps)
	tentot(1)=tentot(1)+temps(1)
	tentot(2)=tentot(2)+temps(2)

	end
line
top

green est appelé dans (56 procédures)

00README-couplag.txt calnoy.f (ccalgre) calri1.f (couplag)
calri2.f (couplag) calrid.f (couplag) cghoul.f (appl_houle3dc)
cocogr.f (couplag) cogdno.f (couplag) CONTEX (headers)
cosldn.f (couplag) coslgn.f (couplag) coslno.f (couplag)
coumat.f (couplag) couvec.f (couplag) defcol.f (A_z_mevisu)
dixms4.f (appl_houle3d) dnugho.f (appl_houle3dc) eltq2d.f (appl_rw3d)
fctrm.f gcanal.f (appl_helmz2d) ghband.f (appl_helmz2d)
ghelms.f (appl_helmz2d) ghelmz.f (appl_helmz3d) ghlmz2.f (appl_helmz2d)
ghloin.f (appl_helmz2d) ghoul2.f (appl_houle2d) ghoule.f (appl_houle3d)
glap2c.f (utiliter) glap3c.f (utiliter) gmaxs1.f (appl_maxwl3d)
gmaxwl.f (appl_maxwl3d) gmloin.f (appl_maxwl3d) grw2a.f (appl_rw2d)
grw2ac.f (appl_rw2d) grw2d.f (appl_rw2d) gwd.f (appl_rw3d)
gwdjk.f (appl_rw3d) gwdyi.f (appl_rw3d) gwelb.f (appl_rw3d)
klsyme.f (sdexplo) mksdgn.f (sdexplo) mksymg.f (sdexplo)
noydir.f (ccalgre) noydit.f (appl_rw3d) noyfou.f (ccalgre)
noyneu.f (ccalgre) noytvc.f (couplag) noyvc.f (couplag)
pplap2d.f (A_laplace2d) prsdgn.f (prsd) prsogn.f (modeles)
prsono.f (modeles) relfri.f (couplag) repint.f (couplag)
symgre.f (ccalgre) symgrt.f (appl_rw3d)  

top