set Neumann boundary conditon on cylinder surface with OGS5

Hoi,
I tried to reactivate an older model in OGS5 for calculation of heat
transport in a 3D geometry. The model setup includes a Neumann (flux)
boundary for a cylinder surface.

For definition of the cylinder surface the old gli file included

#SURFACE
$NAME
   CAN_CYLINDER
  $TYPE
   100
    8 55 0.475 0.001

; point id for Center of top surface of cylinder, point id for Center of
bottom surface of cylinder, radius, epsilon

The definition of the cylinder surface does not work anymore, it only
defines the cap of the cylinder. It seems related to some kind of
replacement of Wenqings older routines where the case type 100 is not
included anymore.
I attached a picture of the mesh geometry and the cap surface marked
with a higher temperature (but I need the other cylincer surface as well).

Next I would like to set a Neumann (flux boundary) condition via the st
file. I hope at least that this will give a Neumann boundary condition
and not a simple source term as stated in the online help.

So this are actually the questions I have:

1) Is there another way to define the cylinder surface?
2) Does the CONSTANT_NEUMANN keyword in the st-file set a Neumann
boundary conditon, or simply a scaled source term?
2a) How do I set a Neumann boundary condition, if CONSTANT_NEUMANN is
for source terms only?

Thanks for the help and many greetings, Georg

···

--
PD Dr. Georg Kosakowski * Laboratory for Waste Management
Paul Scherrer Institut * 5232 Villigen/PSI * Switzerland
Phone: +41-56-3104743 * Email: georg.kosakowski@psi.ch
homepage: http://www.psi.ch/les/georg-kosakowski

Unfortunately that functionally was gone. Instead, you can use TIN file for surface. To generate a TIN file, one can
1) generate a triangular mesh of a surface (it is easily to do with Gmsh),
2) checkout a Gmsh to TIN converter from GitHub - wenqing/gmsh2TIN: Convert triangular mesh by Gmsh to TIN data, compile the source code, and run the converter to get TIN files,
3) copy the generated TIN file, e.g. tunnel.tin, to your input data directory,
4) define surface in gli as

···

------
#SURFACE
$NAME
GED
$EPSILON
1.0e-4
$TIN
tunnel.tin
------
5) apply Neumann BC to the defined surface.

On 10/11/2017 03:29 PM, Georg Kosakowski wrote:

Hoi,
I tried to reactivate an older model in OGS5 for calculation of heat
transport in a 3D geometry. The model setup includes a Neumann (flux)
boundary for a cylinder surface.

For definition of the cylinder surface the old gli file included

#SURFACE
  $NAME
    CAN_CYLINDER
   $TYPE
    100
     8 55 0.475 0.001

; point id for Center of top surface of cylinder, point id for Center of
bottom surface of cylinder, radius, epsilon

The definition of the cylinder surface does not work anymore, it only
defines the cap of the cylinder. It seems related to some kind of
replacement of Wenqings older routines where the case type 100 is not
included anymore.
I attached a picture of the mesh geometry and the cap surface marked
with a higher temperature (but I need the other cylincer surface as well).

Next I would like to set a Neumann (flux boundary) condition via the st
file. I hope at least that this will give a Neumann boundary condition
and not a simple source term as stated in the online help.

So this are actually the questions I have:

1) Is there another way to define the cylinder surface?
2) Does the CONSTANT_NEUMANN keyword in the st-file set a Neumann
boundary conditon, or simply a scaled source term?
2a) How do I set a Neumann boundary condition, if CONSTANT_NEUMANN is
for source terms only?

Thanks for the help and many greetings, Georg

Hi Wenqing & Marc,
thanks a lot for the hints.
The definition of the surface via the TIM file worked perfectly!
I have only a problem with the Neumann boundary. Commonly a Neumann
Boundary condition fixes the flux over a boundary, i.e. the gradient of
the potential has to be fixed (but not the potential itself)!
In my case the flux over the boundary should be set to a
(time-dependent) value.
According to the Documentation
https://svn.ufz.de/ogs/wiki/public/doc-auto/by_ext/st/S_dis_type
this should be the way to do it:

#SOURCE_TERM
$PCS_TYPE
  HEAT_TRANSPORT
$PRIMARY_VARIABLE
  TEMPERATURE1
$GEO_TYPE
  SURFACE CAN
$DIS_TYPE
  CONSTANT_NEUMANN 0.083626024 ;1/(11.958 m2 for a canister)...W/m2
$TIM_TYPE
  CURVE 1

But this does not give the correct results.
I compared the solution to the same setup with COMSOL, and found a
temporary temperature decrease with time for the boundary nodes once I
decrease the heat flux into the domain. But a temperature decrease is in
this case only possible for a negative heat flux over the boundary (out
of the domain).
It seems that in OGS the above procedure "only" sets a (correctly
scaled) source/sink term at each node, but does not set a correct
Neumann boundary condition.
For a real Neumann boundary a a zero flux (CONSTANT_NEUMANN 0.0) should
result result in a "no-flow boundary" (like for the case of not applying
a boundary condition on a boundary node).

So the question remains, is it possible to set a Neumann boundary
condition, and if yes, how?

Thanks and many greetings, Georg

···

On 10/11/2017 05:56 PM, Wenqing Wang wrote:

Unfortunately that functionally was gone. Instead, you can use TIN file
for surface. To generate a TIN file, one can
1) generate a triangular mesh of a surface (it is easily to do with Gmsh),
2) checkout a Gmsh to TIN converter from
GitHub - wenqing/gmsh2TIN: Convert triangular mesh by Gmsh to TIN data, compile the source code, and run
the converter to get TIN files,
3) copy the generated TIN file, e.g. tunnel.tin, to your input data
directory,
4) define surface in gli as
------
#SURFACE
$NAME
GED
$EPSILON
1.0e-4
$TIN
tunnel.tin
------
5) apply Neumann BC to the defined surface.

On 10/11/2017 03:29 PM, Georg Kosakowski wrote:

Hoi,
I tried to reactivate an older model in OGS5 for calculation of heat
transport in a 3D geometry. The model setup includes a Neumann (flux)
boundary for a cylinder surface.

For definition of the cylinder surface the old gli file included

#SURFACE
$NAME
CAN_CYLINDER
$TYPE
100
8 55 0.475 0.001

; point id for Center of top surface of cylinder, point id for Center of
bottom surface of cylinder, radius, epsilon

The definition of the cylinder surface does not work anymore, it only
defines the cap of the cylinder. It seems related to some kind of
replacement of Wenqings older routines where the case type 100 is not
included anymore.
I attached a picture of the mesh geometry and the cap surface marked
with a higher temperature (but I need the other cylincer surface as
well).

Next I would like to set a Neumann (flux boundary) condition via the st
file. I hope at least that this will give a Neumann boundary condition
and not a simple source term as stated in the online help.

So this are actually the questions I have:

1) Is there another way to define the cylinder surface?
2) Does the CONSTANT_NEUMANN keyword in the st-file set a Neumann
boundary conditon, or simply a scaled source term?
2a) How do I set a Neumann boundary condition, if CONSTANT_NEUMANN is
for source terms only?

Thanks for the help and many greetings, Georg

--
PD Dr. Georg Kosakowski * Laboratory for Waste Management
Paul Scherrer Institut * 5232 Villigen/PSI * Switzerland
Phone: +41-56-3104743 * Email: georg.kosakowski@psi.ch
homepage: Georg Kosakowski | LES | Paul Scherrer Institut (PSI)

In OGS5, the Neumann boundary (by CONSTANT_NEUMANN)
for flow process is velocity * n (flux/[the fluid density] because the PDE is scaled by the fluid density. n is the normal to the boundary),
for the heat conduction process is heat power/[area of the corresponding boundary].

···

On 10/12/2017 02:00 PM, Georg Kosakowski wrote:

Hi Wenqing & Marc,
thanks a lot for the hints.
The definition of the surface via the TIM file worked perfectly!
I have only a problem with the Neumann boundary. Commonly a Neumann
Boundary condition fixes the flux over a boundary, i.e. the gradient of
the potential has to be fixed (but not the potential itself)!
In my case the flux over the boundary should be set to a
(time-dependent) value.
According to the Documentation
https://svn.ufz.de/ogs/wiki/public/doc-auto/by_ext/st/S_dis_type
this should be the way to do it:

#SOURCE_TERM
  $PCS_TYPE
   HEAT_TRANSPORT
  $PRIMARY_VARIABLE
   TEMPERATURE1
  $GEO_TYPE
   SURFACE CAN
  $DIS_TYPE
   CONSTANT_NEUMANN 0.083626024 ;1/(11.958 m2 for a canister)...W/m2
  $TIM_TYPE
   CURVE 1

But this does not give the correct results.
I compared the solution to the same setup with COMSOL, and found a
temporary temperature decrease with time for the boundary nodes once I
decrease the heat flux into the domain. But a temperature decrease is in
this case only possible for a negative heat flux over the boundary (out
of the domain).
It seems that in OGS the above procedure "only" sets a (correctly
scaled) source/sink term at each node, but does not set a correct
Neumann boundary condition.
For a real Neumann boundary a a zero flux (CONSTANT_NEUMANN 0.0) should
result result in a "no-flow boundary" (like for the case of not applying
a boundary condition on a boundary node).

So the question remains, is it possible to set a Neumann boundary
condition, and if yes, how?

Thanks and many greetings, Georg

On 10/11/2017 05:56 PM, Wenqing Wang wrote:

Unfortunately that functionally was gone. Instead, you can use TIN file
for surface. To generate a TIN file, one can
1) generate a triangular mesh of a surface (it is easily to do with Gmsh),
2) checkout a Gmsh to TIN converter from
GitHub - wenqing/gmsh2TIN: Convert triangular mesh by Gmsh to TIN data, compile the source code, and run
the converter to get TIN files,
3) copy the generated TIN file, e.g. tunnel.tin, to your input data
directory,
4) define surface in gli as
------
#SURFACE
$NAME
GED
$EPSILON
1.0e-4
$TIN
tunnel.tin
------
5) apply Neumann BC to the defined surface.

On 10/11/2017 03:29 PM, Georg Kosakowski wrote:

Hoi,
I tried to reactivate an older model in OGS5 for calculation of heat
transport in a 3D geometry. The model setup includes a Neumann (flux)
boundary for a cylinder surface.

For definition of the cylinder surface the old gli file included

#SURFACE
$NAME
CAN_CYLINDER
$TYPE
100
8 55 0.475 0.001

; point id for Center of top surface of cylinder, point id for Center of
bottom surface of cylinder, radius, epsilon

The definition of the cylinder surface does not work anymore, it only
defines the cap of the cylinder. It seems related to some kind of
replacement of Wenqings older routines where the case type 100 is not
included anymore.
I attached a picture of the mesh geometry and the cap surface marked
with a higher temperature (but I need the other cylincer surface as
well).

Next I would like to set a Neumann (flux boundary) condition via the st
file. I hope at least that this will give a Neumann boundary condition
and not a simple source term as stated in the online help.

So this are actually the questions I have:

1) Is there another way to define the cylinder surface?
2) Does the CONSTANT_NEUMANN keyword in the st-file set a Neumann
boundary conditon, or simply a scaled source term?
2a) How do I set a Neumann boundary condition, if CONSTANT_NEUMANN is
for source terms only?

Thanks for the help and many greetings, Georg