aboutsummaryrefslogtreecommitdiff
path: root/src/AHFinder_dat.F
blob: 718d16e5ebde77c8f70ed64d85320f72537d5421 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
/*@@
  @file      AHFinder_dat.F
  @date      April 1998
  @author    Miguel Alcubierre
  @desc 
             F90 module containing data to be shared by
             the different subroutines.

             For the meaning of the spectral components of
             the different flows see:

             C. Gundlach, Phys. Rev. D 57, 863 (1998).

  @enddesc 
@@*/

#include "cctk.h"

      module AHFinder_dat

      implicit none

      logical firstfun,firstleg,firstint
      logical nonaxi,refx,refy,refz,cartoon
      logical offset,wander
      logical minarea,flow,find_trapped_surface
      logical logfile,verbose,veryver,guessverbose
      logical interror,guessold
      logical find3,sloppy,inner,guess_absmin,manual_guess
      logical status_old,status_old_0,status_old_1,status_old_2

      integer lmax,stepx,stepy,stepz
      integer ntheta,nphi
      integer mfind,ahf_ncall
      integer nx,ny,nz
      integer nprocs,myproc,ierr

      CCTK_INT nfile
      CCTK_INT interror1,interror2,interror3
      CCTK_INT inside_min_count,inside_min_neg_count

      CCTK_REAL xc,yc,zc
      CCTK_REAL xmn,ymn,zmn,xmx,ymx,zmx
      CCTK_REAL xc_old,yc_old,zc_old
      CCTK_REAL intexp,intexp2,intexpdel2,intarea
      CCTK_REAL rhmax,rhmin
      CCTK_REAL circ_eq,meri_p1,meri_p2

      CCTK_REAL hw,cw,nw
      CCTK_REAL dx,dy,dz

      CCTK_REAL avgx,avgy,avgz

      CCTK_REAL, allocatable, dimension (:)   :: c0,c0_0,c0_1,c0_2,c0_old
      CCTK_REAL, allocatable, dimension (:,:) :: cc,cc_0,cc_1,cc_2,cc_old
      CCTK_REAL, allocatable, dimension (:,:) :: cs,cs_0,cs_1,cs_2,cs_old

      CCTK_REAL, allocatable, dimension (:)   :: hflow0,cflow0,nflow0
      CCTK_REAL, allocatable, dimension (:,:) :: hflowc,cflowc,nflowc
      CCTK_REAL, allocatable, dimension (:,:) :: hflows,cflows,nflows

      character(len=200) :: filestr

      data ahf_ncall / 0 /
      data status_old   / .false. /
      data status_old_0 / .false. /
      data status_old_1 / .false. /
      data status_old_2 / .false. /

      save ahf_ncall
      save c0,c0_0,c0_1,c0_2
      save cc,cc_0,cc_1,cc_2
      save cs,cs_0,cs_1,cs_2
      save status_old,status_old_0,status_old_1,status_old_2

!     Description of variables:
!
!     firstfun   First call to function FUNC?
!     firstleg   First call to function LEGEN?
!     firstint   First call to subroutine AHFinder_int?
!
!     nonaxi     Is the data non-axisymmetric?
!
!     refx       Reflection symmetry x->-x?
!
!     refy       Reflection symmetry y->-y?
!
!     refz       Reflection symmetry z->-z?
!
!     cartoon    Are we using cartoon_2d?
!
!     inner      Look for inner horizon?
!
!     sloppy     Sloppy initial guess?
!
!     offset     Is the center offset from the origin?
!     wander     Do we allow the center to wander?
!
!     minarea    Do we want to minimize area?
!
!     flow       Use fast flow algorithm instead of minimization?
!
!     logfile    Write log file?
!
!     verbose    Write messages to screen?
!
!     veryver    Write lots of messages to screen?
!
!     guessverbose   Write info on initial guess points?
!
!     lmax       Maximum number of terms in theta expansion.
!
!     stepx      1 if (refx=1), 0 otherwise.
!     stepy      1 if (refy=1), 0 otherwise.
!     stepz      1 if (refz=1), 0 otherwise.
!
!     ntheta     Number of subdivisions in theta.
!     nphi       Number of subdivisions in phi.
!
!     xc         Coordinate x of centre of surface.
!     yc         Coordinate y of centre of surface.
!     zc         Coordinate z of centre of surface.
!
!     xmn        Minimum value of x over the grid.
!     xmx        Maximum value of x over the grid.
!
!     ymn        Minimum value of y over the grid.
!     ymx        Maximum value of y over the grid.
!
!     zmn        Minimum value of z over the grid.
!     zmx        Maximum value of z over the grid.
!
!     intexp     Integral of expansion over the surface.
!     intexp2    Integral of expansion squared over the surface.
!     intarea    Area of the surface.
!
!     rhmax      Maximum radius of horizon.
!     rhmin      Minimum radius of horizon.
!
!     circ_eq    Equatorial circumference.
!     meri_p1    Length of meridian at phi=0.
!     meri_p2    Length of meridian at phi=pi/2.
!
!     c0(l)      Coefficients of LEGEN(l,0,cos(theta))
!     cc(l,m)    Coefficients of LEGEN(l,m,cos(theta))*cos(m*phi)
!     cs(l,m)    Coefficients of LEGEN(l,m,cos(theta))*sin(m*phi)
!
!     hflow*     Spectral components for "H" flow.
!     cflow*     Spectral components for "C" flow.
!     nflow*     Spectral components for "N" flow.
!
!     interror1  Different from zero if radius is negative.
!     interror2  Different from zero if outside computational domain.
!     interror3  Different from zero if inside mask
!
!     interror   True if any of the 3 errors above are non-zero.
!
!     find3      Look for 3 horizons?
!     mfind      Counter to see for which horizon we are looking.
!
!     inside_min_count        Number of elements in integral (should always
!                             be ntheta*nphi)
!
!     inside_min_neg_count    Number of elements in integral that have
!                             negative expansion.
!
!     avgx        X-position of centroid of apparent horizon
!     avgy        Y-position of centroid of apparent horizon
!     avgz        Z-position of centroid of apparent horizon


!     ***************
!     ***   END   ***
!     ***************

      end module AHFinder_dat