File: vorinc.f90

package info (click to toggle)
code-saturne 4.3.3%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 77,992 kB
  • sloc: ansic: 281,257; f90: 122,305; python: 56,490; makefile: 3,915; xml: 3,285; cpp: 3,183; sh: 1,139; lex: 176; yacc: 101; sed: 16
file content (198 lines) | stat: -rw-r--r-- 7,863 bytes parent folder | download
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
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
!-------------------------------------------------------------------------------

! This file is part of Code_Saturne, a general-purpose CFD tool.
!
! Copyright (C) 1998-2016 EDF S.A.
!
! This program is free software; you can redistribute it and/or modify it under
! the terms of the GNU General Public License as published by the Free Software
! Foundation; either version 2 of the License, or (at your option) any later
! version.
!
! This program is distributed in the hope that it will be useful, but WITHOUT
! ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
! FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
! details.
!
! You should have received a copy of the GNU General Public License along with
! this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
! Street, Fifth Floor, Boston, MA 02110-1301, USA.

!-------------------------------------------------------------------------------

!> \file vorinc.f90
!> Module for vortex method for LES boundary conditions

module vorinc

  !=============================================================================

  implicit none

  !=============================================================================

  ! --------------
  ! Parametres max
  ! --------------
  integer    nentmx, ndatmx
  parameter (nentmx = 10)
  parameter (ndatmx = 10000)

  ! nentmx    : nombre d'entree max
  ! ndatmx    : nombre de points max pour le fichier des donnees

  ! ----------
  ! Dimensions
  ! ----------
  integer, save :: icvor(nentmx), icvor2(nentmx), icvmax , nvomax

  ! icvor  : nombre de faces (global) utilisant des vortex
  !          pour chaque entree
  ! icvor2 : compteur du nombre local de faces utilisant des vortex
  ! icvmax : nombre max de faces utilisant des vortex (sur toutes entrees
  !          confondues)
  ! nvomax : nombre max de vortex utilise (toutes entrees confondues)

  ! ---------
  ! pointeurs
  ! ---------

  integer, allocatable, dimension(:) :: irepvo
  integer, allocatable, dimension(:,:) :: ifacgl, ivorce

  double precision, allocatable, dimension(:,:,:) :: xyzv, yzcel
  double precision, allocatable, dimension(:,:,:) :: yzvor , yzvora
  double precision, allocatable, dimension(:,:) :: uvort, vvort, wvort
  double precision, allocatable, dimension(:,:) :: visv
  double precision, allocatable, dimension(:,:) :: signv, sigma
  double precision, allocatable, dimension(:,:,:) :: gamma
  double precision, allocatable, dimension(:,:) :: temps, tpslim

  ! irepv    : tableau associant aux faces de bord le numero d'une entree
  ! ifagl    : tableau de connectivite
  ! ivrce    : tableau reperant la cellule la plus voisine
  !             de chaque vortex
  ! xyzv     : tableaux contenant les coordonnees de
  !             toutes les faces d'entree
  ! visv     : tableau contenant la viscosite sur
  !             toutes les faces d'entree
  ! yzcel    : tableau contenant les coordonnees des
  !             faces d'entree dans le repere local
  ! uvort,...: tableaux contenant les composantes de vitesse
  ! yzvor    : du tableau contenant la position des vortex dans le repere local
  ! yzvoa    : debut du tableau contenant la position des vortex
  !             dans le repere local au pas de temps precedent
  ! signv    : debut du tableau contenant le sens de rotation des
  !             vortex
  ! xsigm    : debut du tableau contenant la taille des vortex
  ! xgamm    : debut du tableau contenant l'intensite des vortex
  ! xtmp     : debut du tableau contenant le temps cumule
  ! xtmpl    : debut du tableau contenant le temps de vie des vortex

  ! -----------------
  ! Options de calcul
  ! -----------------

  integer, save :: nnent, nvort(nentmx), initvo(nentmx),          &
                   icas(nentmx), itlivo(nentmx),                  &
                   isgmvo(nentmx), idepvo(nentmx),                &
                   iclvor(4,nentmx), ndat(nentmx)

  ! nnent  : nombre d entrees utilisees
  ! nvort  : nombre de vortex
  ! initvo : indicateur de reinitialisation
  ! icas   : type de geometrie pour l'entree
  ! itlivo : type de modele pour la duree de vie
  ! isgmvo : type de modele pour la taille des vortex
  ! idepvo : type de modele pour la marche en temps
  ! iclvor : type de condition aux limites
  ! ndat   : nombre de lignes du fichier de donnees

  ! -------
  ! Donnees
  ! -------

  double precision, save :: tlimvo(nentmx), xsgmvo(nentmx), ud(nentmx),      &
                            xdat(ndatmx,nentmx),                             &
                            ydat(ndatmx,nentmx), zdat(ndatmx,nentmx),        &
                            udat(ndatmx,nentmx),                             &
                            vdat(ndatmx,nentmx), wdat(ndatmx,nentmx),        &
                            dudat(ndatmx,nentmx),                            &
                            kdat(ndatmx,nentmx), epsdat(ndatmx,nentmx),      &
                            udebit(nentmx), kdebit(nentmx), edebit(nentmx),  &
                            dir1(3,nentmx), dir2(3,nentmx), dir3(3,nentmx),  &
                            cen(3,nentmx) , surf(3,nentmx),                  &
                            ymax(nentmx)  , ymin(nentmx),                    &
                            zmax(nentmx)  , zmin(nentmx),                    &
                            xsurfv(nentmx), llz(nentmx),                     &
                            lly(nentmx)   , lld(nentmx)

  ! tlimvo      : temps de vie max des vortex impose par l'utilisateur
  ! xsgmvo      : diametre des vortex impose par l'utilisateur
  ! ud          : vitesse de deplacement (max) imposee par l'utilisateur
  ! xdat, ...   : coordonnees des points ou sont connues les donnees
  ! udat        : vitesse moyenne principale (fichier de donnees)
  ! vdat,wdat   : vitesse moyenne transverse (fichier de donnees)
  ! dudat       : derive normale de la vitesse principale (fichier d'entree)
  ! kdat        : ec moyenne (fichier d'entree)
  ! epsdat      : dissipation (fichier d'entree)
  ! udebit      : vitesse moyenne imposee par l'utilisateur en entree
  ! kdebit      : ec imposee par l'utilisateur en entree
  ! edebit      : dissipation imposee par l'utilisateur en entree
  ! dir1,...    : vecteurs definissant le repere local dans le plan d'entree
  ! cen         : coordonnees du centre de l'entree
  ! surf        : vecteur surface du plan d'entree (supposee plane)
  ! xmax,...    : dimensions max de l'entree dans le repere local
  ! llz,lly,lld : dimensions de l'entree dans le calcul

  character(len=50), save :: ficvor(nentmx)

  ! ficvor : nom du fichier de donnee
  !=============================================================================

contains

  !=============================================================================

  subroutine init_vortex

    allocate(ivorce(nvomax,nnent))
    allocate(yzcel(icvmax,2,nnent))
    allocate(visv(icvmax,nnent))
    allocate(xyzv(icvmax,3,nnent))
    allocate(uvort(icvmax,nnent))
    allocate(vvort(icvmax,nnent))
    allocate(wvort(icvmax,nnent))
    allocate(yzvor(nvomax,2,nnent))
    allocate(yzvora(nvomax,2,nnent))
    allocate(signv(nvomax,nnent))
    allocate(sigma(nvomax,nnent))
    allocate(gamma(nvomax,2,nnent))
    allocate(temps(nvomax,nnent))
    allocate(tpslim(nvomax,nnent))

  end subroutine init_vortex

  !=============================================================================

  subroutine finalize_vortex

    deallocate(ivorce)
    deallocate(yzcel)
    deallocate(visv)
    deallocate(xyzv)
    deallocate(uvort)
    deallocate(vvort)
    deallocate(wvort)
    deallocate(yzvor)
    deallocate(yzvora)
    deallocate(signv)
    deallocate(sigma)
    deallocate(gamma)
    deallocate(temps)
    deallocate(tpslim)

  end subroutine finalize_vortex

end module vorinc