/usr/share/code_saturne/user/usthht.f90 is in code-saturne-data 3.3.2-4.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 | !-------------------------------------------------------------------------------
! Code_Saturne version 3.3.2
! --------------------------
! This file is part of Code_Saturne, a general-purpose CFD tool.
!
! Copyright (C) 1998-2014 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.
!-------------------------------------------------------------------------------
subroutine usthht &
!================
( mode , enthal , temper )
!===============================================================================
! FONCTION :
! --------
! ROUTINE UTILISATEUR
! LOI ENTHALPIE -> TEMPERATURE (MODE = 1)
! LOI TEMPERATURE -> ENTHALPIE (MODE = -1)
!-------------------------------------------------------------------------------
! Arguments
!__________________.____._____.________________________________________________.
! name !type!mode ! role !
!__________________!____!_____!________________________________________________!
! mode ! e ! <-- ! -1 : t -> h ; 1 : h -> t !
! enthal ! r ! <-- ! enthalpie !
! temper ! r ! <-- ! temperature !
!__________________!____!_____!________________________________________________!
! Type: i (integer), r (real), s (string), a (array), l (logical),
! and composite types (ex: ra real array)
! mode: <-- input, --> output, <-> modifies data, --- work array
!===============================================================================
!===============================================================================
! Module files
!===============================================================================
use paramx
use entsor
use parall
use period
!===============================================================================
implicit none
! Arguments
integer mode
double precision enthal, temper
! Local variables
integer it
! Pour le second exemple ci-dessous,
! donnee de NTAB > 1 valeurs (fictives) de H (=HT) tabulees
! en fonction de NTAB valeurs de T (=TH) (attention a l'unite K ou C)
integer ntab
parameter (ntab=5)
double precision ht(ntab), th(ntab)
data ht /100000.d0,200000.d0,300000.d0, &
400000.d0,500000.d0 /
data th / 100.d0, 200.d0, 300.d0, &
400.d0, 500.d0 /
!===============================================================================
! ATTENTION, CE SOUS-PROGRAMME EST APPELE DANS DES BOUCLES :
! ========= ================
! EVITER LES IMPRESSIONS
! ======
! EVITER LES OPERATIONS FAISANT APPEL AU PARALLELISME
! ======
!===============================================================================
! EXEMPLES
!===============================================================================
! Premier exemple, correspondant a H=CpT avec Cp = 4000
! =====================================================
! --- Mode H -> T
if (mode .eq. 1) then
temper = enthal / 4000.d0
! --- Mode T -> H
else
enthal = temper * 4000.d0
endif
return
! Second exemple, correspondant a une interpolation simple
! === a partir d'une tabulation H=f(T) entree en DATA ====
! ================================================
! --- Mode H -> T
if (mode .eq. 1) then
! Initialisation par defaut
temper = 0.d0
! Si H plus petit que la plus petite enthalpie tabulee
! on limite arbitrairement T a la plus petite temperature
if(enthal.le.ht(1)) then
temper = th(1)
! Si H plus grand que la plus grande enthalpie tabulee
! on limite arbitrairement T a la plus grande temperature
elseif(enthal.ge.ht(ntab)) then
temper = th(ntab)
! Sinon, on interpole lineairement
else
do it = 2, ntab
if(enthal.le.ht(it)) then
temper = th(it-1) &
+(enthal-ht(it-1))*(th(it)-th(it-1))/(ht(it)-ht(it-1))
endif
enddo
endif
! --- Mode T -> H
else
! Initialisation par defaut
enthal = 0.d0
! Si T plus petit que la plus petite temperature tabulee
! on limite arbitrairement H a la plus petite enthalpie
if(temper.le.th(1)) then
enthal = ht(1)
! Si T plus grand que la plus grande temperature tabulee
! on limite arbitrairement H a la plus grande enthalpie
elseif(temper.ge.th(ntab)) then
enthal = ht(ntab)
! Sinon, on interpole lineairement
else
do it = 2, ntab
if(temper.le.th(it)) then
enthal = ht(it-1) &
+(temper-th(it-1))*(ht(it)-ht(it-1))/(th(it)-th(it-1))
endif
enddo
endif
endif
return
!----
! FIN
!----
end subroutine usthht
|