POROSITY_MODEL

Specifies a porosity model for the flow equation.

Type

AcuSolve Command

Syntax

POROSITY_MODEL("name") {parameters...}

Qualifier

User-given name.

Parameters

type (enumerated) [=none]
Type of the porosity model.
none
No porosity.
constant or const
Darcy-Forchheimer porosity model. Requires permeability, darcy_coefficient, forchheimer_coefficient and permeability_direction.
porosity (real) >0 <=1 [=1]
Porosity value.
permeability_type (enumerated) [=cartesian]
Permeability type.
cartesian
Use Cartesian coordinate system to specify permeabilities and directions.
cartesian_bidirectional
Use Cartesian coordinate system to specify directions and separate permeabilities for Darcy and Forchheimer terms.
cylindrical
Use cylindrical coordinate system to specify permeabilities and directions.
spherical
Use spherical coordinate system to specify permeabilities and directions.
direction_1_permeability (real) [=1]
direction_2_permeability (real) [=1]
direction_3_permeability (real) [=1]
Permeability of the porous media in each of the three orthogonal principal axes. Used with constant type. These commands are valid only when permeability_type=cartesian. Also, these commands are equivalent to the previously used permeability array [={1,1,1}], which has been deprecated. AcuSolve will automatically map the permeability_array to the appropriate direction_1_permeability, direction_2_permeability, and direction_3_permeability parameters when reading an input file that uses the deprecated syntax. If both parameters are specified, this mapping will cause the permeability to take precedence over the values that are specified for direction_1_permeability, direction_2_permeability and direction_3_permeability.
direction_1_permeability_forch (real) [=1]
direction_2_permeability_forch (real) [=1]
direction_3_permeability_forch (real) [=1]
Permeability for the Forchheimer term of the porous media in each of the three orthogonal principal axes. Used with cartesian_bidirectional.
Note: The directions of the axes are specified in the same manner as the cartesian option and is the same as the Darcy term.
direction_1_permeability_darcy (real) [=1]
direction_2_permeability_darcy (real) [=1]
direction_3_permeability_darcy (real) [=1]
Permeability for the Darcy term of the porous media in each of the three orthogonal principal axes. Used with cartesian_bidirectional.
Note: The directions of the axes are specified in the same manner as the cartesian option and is the same as the Forchheimer term.
cartesian_permeability_directions (array) [={1,0,0;0,1,0;0,0,1}]
Orthogonal principal axes of the permeability values. The vectors are ortho-normalized prior to use. Used with constant type. This command is equivalent to the previously used permeability_direction [={1,0,0;0.1.0;0,0,1}]. If both are specified in the input file, the one that appears last will be used for the computation.
direction_1_permeability_multiplier_function (string) [=none]
direction_2_permeability_multiplier_function (string) [=none]
direction_3_permeability_multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the permeabilities. If none, no scaling is performed. These commands are valid only when permeability_type = cartesian.
radial_permeability (real) [=1]
Radial permeability of the porous media in cylindrical and spherical coordinate systems. This command is valid only when permeability_type = cylindrical or spherical.
axial_permeability (real) [=1]
Axial permeability of the porous media in cylindrical coordinate system. This command is valid only when permeability_type = cylindrical.
tangential_permeability (real) [=1]
Tangential permeability of the porous media in cylindrical and spherical coordinate systems. This command is valid only when permeability_type = cylindrical or spherical.
cylindrical_permeability_axis (array) [={0,0.0;1,0,0}]
Principal axis of the axial permeability value. Other two principal axes in cylindrical coordinate are computed internally and ortho-normalized prior to use.
radial_permeability_multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the permeabilities. If none, no scaling is performed. This command is valid only when permeability_type = cylindrical or spherical.
axial_permeability_multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the permeabilities. If none, no scaling is performed. This command is valid only when permeability_type = cylindrical.
tangential_permeability_multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the permeabilities. If none, no scaling is performed. This command is valid only when permeability_type = cylindrical or spherical.
spherical_permeability_center (array) [={0,0,0}]
Spherical center of permeability values. This command is valid only when permeability_type = spherical.
darcy_coefficient (real) [=0]
Coefficient of Darcy's (linear) term. Used with constant type.
forchheimer_coefficient (real) [=0]
Coefficient of Forchheimer's (quadratic) term. Used with constant type.
darcy_multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the Darcy coefficient. If none, no scaling is performed.
forchheimer_multiplier_function (string) [=none]
User-given name of the multiplier function for scaling the Forchheimer coefficient. If none, no scaling is performed.
effectiveness_type (enumerated) [=none]
Type of the effectiveness of the porous model.
constant or const
Requires effectiveness.
piecewise_linear
Piecewise linear curve fit. Requires effectiveness_curve_fit_variable and effectiveness_curve_fit_values.
cubic_spline
Cubic spline curve fit. Requires effectiveness_curve_fit_variable and effectiveness_curve_fit_values.
user_function
User-defined function. Requires effectiveness_user_function, effectiveness_user_values, and effectiveness_user_strings.
effectiveness (real) >0 <=1 [=1]
Effectiveness of the flow resistance exerted by the porous medium.This command is valid only when effectiveness_type = constant.
effectiveness_curve_fit_variable (enumerated) [=temperature]
Independent variable of the curve fit for effectiveness. Used with piecewise_linear and cubic_spline types.
x_coordinate
x coordinate
y_coordinate
y coordinate
z_coordinate
z coordinate
x_reference_coordinate
x reference coordinate
y_reference_coordinate
y reference coordinate
z_reference_coordinate
z reference coordinate
temperature
Temperature
species_1
species 1
species_2
species 2
species_3
species 3
species_4
species 4
species_5
species 5
species_6
species 6
species_7
species 7
species_8
species 8
species_9
species 9
effectiveness_curve_fit_values (array) [={0,0}]
A two-column array of independent-variable/effectiveness data values. Used with piecewise_linear and cubic_spline effectiveness types.
effectiveness_user_function (string) [no default]
Name of the effectiveness user-defined function. Used with effectiveness_type = user_function.
effectiveness_user_values (array) [={}]
Array of values to be passed to the user-defined function. Used with effectiveness_type = user_function.
effectiveness_user_strings (array) [={}]
Array of strings to be passed to the user-defined function. Used with effectiveness_type = user_function.

Description

This command specifies a porosity model for the flow (momentum) equations. This model is only applicable to fluid element sets.

POROSITY_MODEL commands are referenced by MATERIAL_MODEL commands, which in turn are referenced by ELEMENT_SET commands:
POROSITY_MODEL( "my porous media" ) {
   type                                = constant 
   direction_1_permeability            = 1.e-6
   direction_2_permeability            = 1.e-2
   direction_3_permeability            = 1.e-6
   cartesian_permeability_directions   = { 1, 0, 0 ;
                                           0, 1, 0 ;
                                           0, 0, 1 ; }
   darcy_coefficient                   = 0
   forchheimer_coefficient             = 0.5                                       
 }
 MATERIAL_MODEL( "my material model" ) {
   porosity_model                      = "my porous media"
   ...
 }
 ELEMENT_SET( "fluid elements" ) {
   material_model                      = "my material model"
   ...
}
In AcuSolve, a porous media problem can be solved using two methods:
  • Superficial Velocity
  • Physical Velocity
In AcuSolve, the porous media is solved at the macroscopic level by averaging the behavior of the flow. The continuity and momentum equation of the flow, in AcuSolve, can be averaged using the superficial averaging method or intrinsic/physical averaging method. AcuSolve, by default, reports the superficially averaged value in the form of superficial velocity. Superficial velocity is calculated based on volumetric flow rate as follows:(1)
V sup e r f i c i a l = Q A MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaWaaSbaaSqaai aadAfadaWgaaadbaGaci4CaiaacwhacaGGWbGaamyzaiaadkhacaWG MbGaamyAaiaadogacaWGPbGaamyyaiaadYgaaeqaaSGaeyypa0ZaaS aaaeaacaWGrbaabaGaamyqaaaaaeqaaaaa@4435@
where Q is the volumetric flow rate and A is the cross-sectional area of the porous media. The continuity equation in superficial averaged form is divergence free for incompressible flow, which ensures continuity of velocity vector across the porous media boundaries. The superficial averaged method may not be very accurate but is useful when flow and pressure drop needs to be solved at the macro level. In AcuSolve, the below form of superficially averaged continuity and momentum equation has been used:(2)
ε β ρ β t + · ( ρ β < v β > ) = 0 MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaWaaSaaaeaacq GHciITcqaH1oqzdaWgaaWcbaGaeqOSdigabeaakiabeg8aYnaaBaaa leaacqaHYoGyaeqaaaGcbaGaeyOaIyRaamiDaaaacqGHRaWkcqGHhi s0cqWIpM+zdaqadaqaaiabeg8aYnaaBaaaleaacqaHYoGyaeqaaOGa eyipaWJaamODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4dacaGLOa GaayzkaaGaeyypa0JaaGimaaaa@5177@
(3)
ρ β ε β < v β > t + 1 ε β 2 · ( ρ β < v β > < v β > ) = < p β > β + ρ β g + μ β ε β 2 < v β > R f MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaWaaSaaaeaacq aHbpGCdaWgaaWcbaGaeqOSdigabeaaaOqaaiabew7aLnaaBaaaleaa cqaHYoGyaeqaaaaakmaalaaabaGaeyOaIyRaeyipaWJaamODamaaBa aaleaacqaHYoGyaeqaaOGaeyOpa4dabaGaeyOaIyRaamiDaaaacqGH RaWkdaWcaaqaaiaaigdaaeaacqaH1oqzdaqhaaWcbaGaeqOSdigaba GaaGOmaaaakmaaBaaaleaaaeqaaaaakiabgEGirlabl+y6Nnaabmaa baGaeqyWdi3aaSbaaSqaaiabek7aIbqabaGccqGH8aapcaWG2bWaaS baaSqaaiabek7aIbqabaGccqGH+aGpcqGH8aapcaWG2bWaaSbaaSqa aiabek7aIbqabaGccqGH+aGpaiaawIcacaGLPaaacqGH9aqpcqGHsi slcqGHhis0cqGH8aapcaWGWbWaaSbaaSqaaiabek7aIbqabaGccqGH +aGpdaahaaWcbeqaaiabek7aIbaakiabgUcaRiabeg8aYnaaBaaale aacqaHYoGyaeqaaOGaam4zaiabgUcaRmaalaaabaGaeqiVd02aaSba aSqaaiabek7aIbqabaaakeaacqaH1oqzdaWgaaWcbaGaeqOSdigabe aaaaGccqGHhis0daahaaWcbeqaaiaaikdaaaGccqGH8aapcaWG2bWa aSbaaSqaaiabek7aIbqabaGccqGH+aGpcqGHsislcaWGsbGaamOzaa aa@8050@
where < v β > MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeyipaWJaam ODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4daaa@3AD5@ is the superficial velocity, ε β MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeqyTdu2aaS baaSqaaiabek7aIbqabaaaaa@396B@ is the porosity of the porous media, f is the porous media contribution to the momentum equation, p is the pressure, g is the gravity, 𝝆 is the density, and μ is the viscosity. R is the rotation tensor to rotate f along the global coordinate system. The term f is defined as:(4)
f = [ C D a r c y μ β k + C F o r c h ρ β k < v β > ] < v β > MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzaiabg2 da9maadmaabaWaaSaaaeaacaWGdbWaaSbaaSqaaiaadseacaWGHbGa amOCaiaadogacaWG5baabeaakiabeY7aTnaaBaaaleaacqaHYoGyae qaaaGcbaGaam4AaaaacqGHRaWkdaWcaaqaaiaadoeadaWgaaWcbaGa amOraiaad+gacaWGYbGaam4yaiaadIgaaeqaaOGaeqyWdi3aaSbaaS qaaiabek7aIbqabaaakeaadaGcaaqaaiaadUgaaSqabaaaaOGaeyip aWJaamODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4dacaGLBbGaay zxaaGaeyipaWJaamODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4da aa@58D4@

where C D a r c y MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4qamaaBa aaleaacaWGebGaamyyaiaadkhacaWGJbGaamyEaaqabaaaaa@3B77@ is the Darcy coefficient, C F o r c h MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4qamaaBa aaleaacaWGgbGaam4BaiaadkhacaWGJbGaamiAaaqabaaaaa@3B76@ is the Forchheimer coefficient, and k MathType@MTEF@5@5@+= feaagKart1ev2aaatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaam4Aaaaa@36E6@ is the permeability.

A more accurate representation of velocity inside the porous media can be attained by solving the continuity and momentum equation inside the porous media using the intrinsic/physical averaging method. AcuSolve solves for physical velocity < v β > β MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeyipaWJaam ODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4ZaaWbaaSqabeaacqaH YoGyaaaaaa@3CA3@ inside the porous media using the below form of the flow equation:(5)
ε β < ρ β > β t + < ρ β v β > β ε β + ε β · < ( ρ β v β ) > β = 0 MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaWaaSaaaeaacq GHciITcqaH1oqzdaWgaaWcbaGaeqOSdigabeaakiabgYda8iabeg8a YnaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4ZaaWbaaSqabeaacqaHYo GyaaaakeaacqGHciITcaWG0baaaiabgUcaRiabgYda8iabeg8aYnaa BaaaleaacqaHYoGyaeqaaOGaamODamaaBaaaleaacqaHYoGyaeqaaO GaeyOpa4ZaaWbaaSqabeaacqaHYoGyaaGccqGHhis0cqaH1oqzdaWg aaWcbaGaeqOSdigabeaakiabgUcaRiabew7aLnaaBaaaleaacqaHYo GyaeqaaOGaey4bIeTaeS4JPFMaeyipaWJaaiikaiabeg8aYnaaBaaa leaacqaHYoGyaeqaaOGaamODamaaBaaaleaacqaHYoGyaeqaaOGaai ykaiabg6da+maaCaaaleqabaGaeqOSdigaaOGaeyypa0JaaGimaaaa @6AB4@
(6)
ρ β < v β > β t + ε β 1 · ( ε β ρ β < v β > β < v β > β ) = < p β > β + ρ β g + μ β [ 2 < v β > β + ε β 1 ε β · < v β > β + ε β 1 < v β > β 2 ε β ] R f MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGceaqabeaacqaHbp GCdaWgaaWcbaGaeqOSdigabeaakmaalaaabaGaeyOaIyRaeyipaWJa amODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4ZaaWbaaSqabeaacq aHYoGyaaaakeaacqGHciITcaWG0baaaiabgUcaRiabew7aLnaaDaaa leaacqaHYoGyaeaacqGHsislcaaIXaaaaOGaey4bIeTaeS4JPFMaai ikaiabew7aLnaaBaaaleaacqaHYoGyaeqaaOGaeqyWdi3aaSbaaSqa aiabek7aIbqabaGccqGH8aapcaWG2bWaaSbaaSqaaiabek7aIbqaba GccqGH+aGpdaahaaWcbeqaaiabek7aIbaakiabgYda8iaadAhadaWg aaWcbaGaeqOSdigabeaakiabg6da+maaCaaaleqabaGaeqOSdigaaO Gaaiykaiabg2da9iabgkHiTiabgEGirlabgYda8iaadchadaWgaaWc baGaeqOSdigabeaakiabg6da+maaCaaaleqabaGaeqOSdigaaOGaey 4kaSIaeqyWdi3aaSbaaSqaaiabek7aIbqabaGccaWGNbaabaGaey4k aSIaeqiVd02aaSbaaSqaaiabek7aIbqabaGccaGGBbGaey4bIe9aaW baaSqabeaacaaIYaaaaOGaeyipaWJaamODamaaBaaaleaacqaHYoGy aeqaaOGaeyOpa4ZaaWbaaSqabeaacqaHYoGyaaGccqGHRaWkcqaH1o qzdaqhaaWcbaGaeqOSdigabaGaeyOeI0IaaGymaaaakiabgEGirlab ew7aLnaaBaaaleaacqaHYoGyaeqaaOGaeS4JPFMaey4bIeTaeyipaW JaamODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4ZaaWbaaSqabeaa cqaHYoGyaaGccqGHRaWkcqaH1oqzdaqhaaWcbaGaeqOSdigabaGaey OeI0IaaGymaaaakiabgEGirlabgYda8iaadAhadaWgaaWcbaGaeqOS digabeaakiabg6da+maaCaaaleqabaGaeqOSdigaaOGaey4bIe9aaW baaSqabeaacaaIYaaaaOGaeqyTdu2aaSbaaSqaaiabek7aIbqabaGc caGGDbGaeyOeI0IaamOuaiaadAgaaaaa@AF89@
where the term f is defined as:(7)
f = ε β [ C D a r c y μ β k + ε C F o r c h ρ β k < v β > β ] < v β > β MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaamOzaiabg2 da9iabew7aLnaaBaaaleaacqaHYoGyaeqaaOWaamWaaeaadaWcaaqa aiaadoeadaWgaaWcbaGaamiraiaadggacaWGYbGaam4yaiaadMhaae qaaOGaeqiVd02aaSbaaSqaaiabek7aIbqabaaakeaacaWGRbaaaiab gUcaRiabew7aLnaalaaabaGaam4qamaaBaaaleaacaWGgbGaam4Bai aadkhacaWGJbGaamiAaaqabaGccqaHbpGCdaWgaaWcbaGaeqOSdiga beaaaOqaamaakaaabaGaam4AaaWcbeaaaaGccqGH8aapcaWG2bWaaS baaSqaaiabek7aIbqabaGccqGH+aGpdaahaaWcbeqaaiabek7aIbaa aOGaay5waiaaw2faaiabgYda8iaadAhadaWgaaWcbaGaeqOSdigabe aakiabg6da+maaCaaaleqabaGaeqOSdigaaaaa@619F@
The superficial velocity and the physical velocity are related using the equation below:(8)
< v β > = ε β < v β > β MathType@MTEF@5@5@+= feaagKart1ev2aqatCvAUfeBSjuyZL2yd9gzLbvyNv2CaerbuLwBLn hiov2DGi1BTfMBaeXatLxBI9gBaerbd9wDYLwzYbItLDharqqtubsr 4rNCHbGeaGqiVu0Je9sqqrpepC0xbbL8F4rqqrFfpeea0xe9Lq=Jc9 vqaqpepm0xbba9pwe9Q8fs0=yqaqpepae9pg0FirpepeKkFr0xfr=x fr=xb9adbaqaaeGaciGaaiaabeqaamaabaabaaGcbaGaeyipaWJaam ODamaaBaaaleaacqaHYoGyaeqaaOGaeyOpa4Jaeyypa0JaeqyTdu2a aSbaaSqaaiabek7aIbqabaGccqGH8aapcaWG2bWaaSbaaSqaaiabek 7aIbqabaGccqGH+aGpdaahaaWcbeqaaiabek7aIbaaaaa@4605@
The darcy_multiplier_function parameter may be used to uniformly scale the Darcy coefficient. The value of this parameter refers to the user-given name of a MULTIPLIER_FUNCTION command in the input file. For example, a Darcy coefficient ramped from zero to 0.5 over the first 10 time steps may be specified by:
POROSITY_MODEL( "ramped Darcy coefficient" ) {
   type                                = constant 
   permeability_type                   = cartesian
   direction_1_permeability            = 1.e-6
   direction_2_permeability            = 1.e-2
   direction_3_permeability            = 1.e-6
   cartesian_permeability_directions   = { 1, 0, 0 ;    0, 1, 0 ;    0, 0, 1 ; }
   darcy_coefficient                   = 1
   forchheimer_coefficient             = 0.5
   darcy_multiplier_function           = "ramped"
   }
   MULTIPLIER_FUNCTION( "ramped" ) {
   type       = piecewise_linear 
   curve_fit_vales                     = { 1, 0 ; 10, 0.5 }
   curve_fit_variable                  = time_step
}
Similarly, forchheimer_multiplier_function may be used to uniformly scale the Forchheimer coefficient. The value of this parameter refers to the user-given name of a MULTIPLIER_FUNCTION command in the input file. For example, using the same MULTIPLIER_FUNCTION command as above, a Forchheimer coefficient ramped from zero to 0.5 over the first 10 time steps may be specified by:
POROSITY_MODEL( "ramped Forchheimer coefficient" ) {
   type                              = constant
   direction_1_permeability          = 1.e-6
   direction_2_permeability          = 1.e-2
   direction_3_permeability          = 1.e-6
   cartesian_permeability_direction  = { 1, 0, 0 ;    0, 1, 0 ;    0, 0, 1 ; }
   darcy_coefficient                 = 0.5
   forchheimer_coefficient           = 1
   forchheimer_multiplier_function   = "ramped"
}
While the default coordinate system is Cartesian, you can also use cylindrical or spherical coordinate systems to specify permeabilities and their directions. The POROSITY_MODEL commands below are an example of cylindrical coordinate system:
POROSITY_MODEL( "my porous media" ) {
    type                          = constant
    permeability_type             = cylindrical 
    radial_permeability           = 1.e-6
    axial_permeability            = 1.e-2
    tangential_permeability       = 1.e-6
    cylindrical_permeability_axis = {0, 0, 0 ;   1, 0, 0 ; }
    darcy_coefficient             = 1
    forchheimer_coefficient       = 0.5
}
and for spherical coordinate system:
POROSITY_MODEL( "my porous media" ) {
    type                        = constant
    permeability_type           = spherical  
    radial_permeability         = 1.e-2
    tangential_permeability     = 1.e-6
    spherical_permeability_axis = {0, 0, 0 ;
    darcy_coefficient           = 1
    forchheimer_coefficient     = 0.5
}

The effectiveness parameter may be used to define a multiplicative constant applied to the force f in equations (Equation 4) and (Equation 7). This parameter controls the effectiveness of the porous medium at providing a resistance to the flow. By setting a value of 1, the porous medium fully exerts its resistance to the flow, while by setting a value of 0, no resistance to the flow is applied.

The porous medium effectiveness can be made temperature dependent to model freezing and melting. The POROSITY_MODEL commands below are an example of a temperature dependent effectiveness going from 1 to 0 at a temperature of 262.15K linearly over 2K:
POROSITY_MODEL( "ModelforMelting" ) {
   type                              = constant
   direction_1_permeability          = 1.0
   direction_2_permeability          = 1.0
   direction_3_permeability          = 1.0
   cartesian_permeability_direction  = { 1, 0, 0 ; 0, 1, 0 ; 0, 0, 1}
   darcy_coefficient                 = 5e+8
   forchheimer_coefficient           = 0
   effectiveness_type                = piecewise_linear
   effectiveness_curve_fit_values    = { 0, 1 ; 261.15, 1; 263.15, 0; 1000, 0 }
   effectiveness_curve_fit_variable  = temperature
An effectiveness of type user_function may be used to model more complex temperature dependencies; see the AcuSolve User-Defined Functions Manual for a detailed description of user-defined functions. An example is provided of a temperature dependent effectiveness going from 1 to 0 at a temperature of 262.15K linearly over 2K as in the previous example. The input command may be given by:
POROSITY_MODEL( "ModelForMelting" ) {
	type                              = constant
	direction_1_permeability          = 1.0
	direction_2_permeability          = 1.0
	direction_3_permeability          = 1.0
	cartesian_permeability_direction  = { 1, 0, 0 ; 0, 1, 0 ; 0, 0, 1 }
	darcy_coefficient                 = 5e+8
	forchheimer_coefficient           = 0
	effectiveness_type                = user_function
	effectiveness_user_function       = usrEffectiveness
	effectiveness_user_values         = {262.15, 2.0}
}
where the user-defined function "usrEffectiveness" may be implemented as follows:
#include "acusim.h"
#include "udf.h"
UDF_PROTOTYPE( usrEffectiveness ) ;				/* function prototype			*/
Void usrEffectiveness (
	UdfHd			udfHd,				/* Opaque handle for accessing data	*/
	Real*			outVec,				/* Output vector			*/
	Integer			nItems,				/* Number of elements			*/
	Integer			vecDim				/* = 1, porosity is a scalar		*/
) {
	Integer			elem ;				/* an element counter			*/
	Real*			temp ;				/* Temperatures of quadrature point	*/
	Real*			usrVals ;			/* user values				*/
	Real			tmelt ;				/* melting temperature			*/
	Real			dmelt ;				/* delta melting		      	*/
	Real			Tp, Tm ;			/* temperature intervals		*/
	Real			phi ;				/* porosity effectiveness		*/
	udfCheckNumUsrVals( udfHd, 2 ) ;			/* check for error			*/
	usrVals= udfGetUsrVals( udfHd ) ;			/* get the user vals			*/
	tmelt	= usrVals[0] ;					/* User Value - Melting temperature	*/
	dmelt	= usrVals[1] ;					/* User Value - Melting delta		*/
	Tp=tmelt+dmelt*0.5 ;
	Tm=tmelt-dmelt*0.5 ;
	// get temperature at integration points
	temp = udfGetElmData( udfHd, UDF_ELM_TEMPERATURE ) ;
	for ( elem = 0 ; elem < nItems ; elem++ ) {
		// compute porosity effectiveness at integration points
		if ( temp[elem] > Tp) {
			phi=0.0 ;
		} else if ( temp[elem] < Tm) {
			phi=1.0 ;
		} else {
			phi=(Tp-temp[elem])/dmelt ;
		}
		outVec[elem] = phi ;
	}
}								/* end of usrEffectiveness */