-
Notifications
You must be signed in to change notification settings - Fork 0
/
nekvariables
181 lines (160 loc) · 8.91 KB
/
nekvariables
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
179
180
181
---------- UNDERSTANDING THE LOGFILE -------------
The line 'Solving for fluid F T T' contains the three boolean vars ifsplit,iftran,ifnav
----------- BOOLEAN VARIABLES ------------
IFSPLIT ||==1: PnPn form, !=1: Pn-2Pn-2 form. "nek_advance"
IFNATC || natural convection, boussinesq turned on == BETAG?
IFDOIT = .FALSE. || Default in drive2.f
IFCVODE = .false.
IFEXPLVIS = .false. || calculation of explicit stress tensor in plan4,
IFTRAN || transient flow
IFFLOW || solve for fluid, pressure - velocity
IFCHAR || use characteristics for convection operator
IFNEKNEK || NO IDEA ??
IFFMTIN || If curved sides exists ?
IFGMSH3 || velocity or stress formulation
IFRE2 || the new binary reafile is created and used
IFDFRM || For timing purposes IFDEFORMED !! if element is deformed!!
IFMVBD || If moving boundary
IFUSERVP || imposed by p30, if the subroutine uservp is to be used.
IFFAST || if Ax is to be solved fast, IFDFRM ==1 => IFFAST = 0
LOCAL ifverbose
LOCAL icalld || Used to determine whether a subroutine has been called
----------- Variables -------------
istep || current iteration step
iostep || output step frecuency
time || TSTEP current time
timef || time at last step
timel || LOCAL time at last step
atime || LOCAL accumulated time
nio || Processor node number
nelx || ZPER number of elements in x-direction
ndim || number of dimensions
lglel || PARALELL vector of length lelt (mapping from local to global element index ?? )
gllel || PARALELL vector of length lelg (mapping from global to local element index ?? )
ie || local element (local in the sense of processor)
ieg || Global element id
cbc || character array holding the boundary condition specifier - one per face per field (velocity, temperature, etc.)
ix || commonly used as iterator over the x-nodes within an element
kx1,kx2 || commonly used as lower and upper bound for ix
nx1,ny1 || similar to lx1,ly1 . Initialized in initdim , drive2.f
nx2,ny2 || similar to lx2,ly2 (Pressure nodes) . Initialized in initdim , drive2.f
T(LX1,LY1,LZ1,LELT,LDIMT) || array containing scalars ... temperature, concentration etc. SOLN
NELV,NELT || number of elements , local and total ? SIZE
IGEOM || 1 or 2... something to do with change in geometry ?
BM1 || array containing the mass in each node??
TA1 || Array used to store convectional contribution of a scalar, TA2,TA3 the same,induct.f SCRUZ
cdiff || diffusivity
CPGRP(-5:10,LDIMT1,3)|| ???? INPUT
ldimt1 || ldimt+1 , number of passive scalars plus 1. SIZE
ldimt3 || ldimt+3 , number of passive scalars plus 3. SIZE
IGROUP(lelt) || the group id of each element. INPUT
pm1 (lx1,ly1,lz1,lelv) || Pressure mapped to mesh 1
zgm1(lx1,3) || contains the GLL points for x,y and z directions. imposed in coeff.f , ZW,
vdiff(I,J,K,IEL,IFIELD)|| array of turbulent viscosity read from uservp in nekuvp
CPFLD(ldimt1,3) || scalar parameters, see connect2, rdparam
---------- user specified routines-----------
userbc : boundary conditions
useric : initial conditions
uservp : variable properties
userf : local acceleration term for fluid
userq : local source term for scalars
userchk: general purpose routine for checking errors etc.
------TSTEP----------
DT || timestep
DTLAG || array containing the preevious 10 timesteps
BD || array containing upto 10 backward difference coeffs
AB || array containing upto 10 extrapolation coeffs (Adam-Bash...)
NBDINP || param(27), TORDER, temporal discretization order, initialized in drive2.f
NBD || temporal discretization order, including initial developement.
DTINVM || 1/DT
------curved elements------
CCURVE(12,lelt) || array containing curved side character. , INPUT
CURVE(12,6,LELT) || array containing curved side information, INPUT
IFDFRM(LELT) || array of booleans regarding element structure.. angle=90 or not ? || COMMON/FASTMD
arcsrf(xml,yml,zml,nxl,nyl,nzl,ie,isid) || imposing circle geometry.
sphsrf(xml,yml,zml,iface,ie,nxl,nyl,nzl,work) || imposing sperical geometry
rdcurve || subroutine for reading curved side data
bin_rd1(ifbswap) || reading mesh, curves, bc. called from subroutine readat for .re2 files.
gengeom(igeom) || Generate geometry data, drive2.f
geom_reset(icalled) || reGenerate geometry data, ic.f
geom1 (xm3,ym3,zm3) || routine to generate all elemental geometric data for mesh 1 coeff.f
glmapm1 || routine to generate mapping data based on GLL , coeff.f
volume || Compute the volume coeff.f
setinvm || Inverts the mass matrix coeff.f
setdef || Set up deformed element logical switches, genxyz.f KEY FUNCTION!!!
--------------------------------------------------------------------------------------
----- local variables used when interpolating values and writing to file htps-procedure----
fieldin || input field(s) to interpolate (lelt*lxyz,nfld)
nfld || number of fields in fieldin
pts || packed list of interpolation points pts:=[x(1)...x(n),y(1)...y(n),z(1)...z(n)]
n || local number of interpolation points
ifto || transpose output (n,nfld)^T = (nfld,n)
itpts || find interpolation points
ih || interpolation handle
fieldout || packed list of interpolated values (n,nfld)
---------- Functions -------------------------------------
XM1(ix,iy,iz,e) Provides the x-position of node nr (ix,iy,iz) in element e.
avg1(avg_var,curr_var,alpha,beta,n,'avg_var',ifverbose) Calculating average of var. alpha and beta are the weights, n is the length of the vector navier5.f
avg2 Basically the same but for squared variables.
avg3 average of a variable that is a product of two separate variables.
avg_all averaging all standard variables... navier5.f
rzero(vec,n) fill vec with length n full of zeroes
get_exyz get the element position in each direction of a given element
hpts() output for some points given in htps.in postpro.f
hpts_out(fieldout,nflds,nfldm,npoints,nbuff)
facind(KX1,KX2,KY1,KY2,KZ1,KZ2,NX,NY,NZ,IFACE) Making sure the limits kx1,kx2... are correct when iterating over face IFACE.
userbc(IX,IY,IZ,IFACE,IEG) imposing bc for node (ix,iy,iz) on face iface of element IEG
NEKASGN (IX,IY,IZ,IEL) Updating the common variables in NEKUSE for the given node NOTE: Is performed before every userbc call! local element number, bdry.f
copy(a,b,n) copies the n first elements in b to a. a,b = real
settolv() || Set tolerance for velocity vector
convop(conv,fi) || compute the convective term of a scalar
blank(A,N) || set all elements in a character array equal ''
FNC(ETA) || Should return something close to zero if eta is small. Has to do with sphere genxyz.f
lagmass || Lag the mass matrix
nekuvp (iel) || Generate user-specified material properties for element iel subs1.f (calls uservp)
vlmin(v,n) || finds the minvalue of array v with length n
rone(A,n) || Fill A with n 1.0 math.f
ione(A,n) || Fill A with n 1 math.f
add2s2(A,B,c,n) || A+cB math.f
col2(a,b,n) || a.*b math.f
subroutine dudxyz (du,u,rm1,sm1,tm1,jm1,imsh,isd)|| navier1.f
function facint_a(a,area,f,e) || Integrate areal array a() on face f of element e. navier5.f
function facint(a,b,area,ifc,ie) || Take the dot product of A and B on the surface IFACE1 of element IE.
subroutine vrdsmsh || connect.f ,Verify that mesh and dssum are properly defined
subroutine tensr3(v,nv,u,nu,A,Bt,Ct,w)|| Tensor product application of v = (C x B x A) u , fasts.f
subroutine gh_face_extend_3d(x,zg,n,gh_type,e,v)|| gh algorithm x = the array to be modified, zg = gll-points, n = pol degree, gh_type = 2,
ltrunc(string,l) || returns the position of the last non-blank character in string of length l, math.f
INDX_CUT(line,'str',3) || check if line contains the string 'str' of 3 char
------------- Files ---------------
htps.in A file that defines certain output points, on the format:
N
X1 Y1 Z1
X2 Y2 Z2
.....
XN YN ZN
------------- TIPS ---------------
When defining curves... a minus sign could imply reducing the precision.
say t(lx,ly) is to be iterated in a function. often the first element is
passed as t(1,1) or simply t along with n = lx*ly
When writing to screen, notice the format key. The second input. Make sure you
find the right format!
mesh1 is the velocity mesh
When reading curves! Note that the format changes for different number of elements
check rdcurve connect2.f
------- Q's for THG ------------
icalld ? local variable in many scripts...
igeom ? Moving mesh
why does branches/mvmesh/ branches/adapt_mesh contain many of the same functions as trunk/nek ??
Usrvp, shouldn't field be a variable as well in order to get the right output ??
What is Mesh 1 ?
Why are there 2 times 9 scalars in rea file, 4 lines of passive scalars...
answer: This is the variables cdiff ctrans sat in subs1.f , vprops
The initial conditions
read in ic.f
sets the boolean arrays
ifprsl
iffort
------ Common mistakes ------
The lelt variable is not large enough
Remember to set all parts in icem to PLOAD, what went wrong in test-case
Relocation truncated to fit. ==> lx1*lelt is too big!!