Wiki

Clone wiki

mofem-joseph / Reservoir

###Reservoir###

Keywords: Concrete, fluid pressure


Problem description

A square concrete water reservoir is modelled with different water levels and principal stresses are calculated. In the following document an example how to make mesh, run analysis and post-process results is presented. Such analysis can be used to design reinforced concrete structures, where principle stresses and its principal directions are used to calculate reinforcement density and steel fibre directions.

pool_slice

Figure 2. Section of Reservoir with various water levels


Files

A Cubit script file was created, where it generates the geometry/mesh and apply boundary conditions and fluid pressure. Comments in the script are denoted with number sign.

water_reservoir.jou (CUBIT journal)

Cubit mesh files were prepare for all the 5 water levels.

water_reservoir1.cub (Water level at 0.24)

water_reservoir2.cub (Water level at 0.43)

water_reservoir3.cub (Water level at 0.62)

water_reservoir4.cub (Water level at 0.81)

water_reservoir5.cub (Water level at 1.00)


Applied Fluid Pressure

Fluid Pressure can be directly applied from cubit using the following procedure:

  • create a blockset of surfaces subjected to the fluid pressure load
  • rename this blockset FLUID_PRESSURE1
  • if other surfaces are subject to fluids with different densities and/or levels, new blockset should be created for these surfaces and named recursively FLUID_PRESSURE2 etc.
  • Every blockset is assigned with 7 attributes as follows
    • Attribute 1 -- Density of fluid
    • Attribute 2 -- Acceleration in x-direction
    • Attribute 3 -- Acceleration in y-direction
    • Attribute 4 -- Acceleration in z-direction
    • Attribute 5 -- Zero pressure point of fluid x-direction (defines the fluid surface in the yz-plane)
    • Attribute 6 -- Zero pressure point of fluid y-direction (defines the fluid surface in the xz-plane)
    • Attribute 7 -- Zero pressure point of fluid z-direction (defines the fluid surface in the xy-plane)

In our model, attribute 7 define each water levels shown in Figure 2.


Applied Self weight

One can add the self weight of the structure, in this case concrete. This is done as follows:

  • Create a blockset with name BODY_FORCES containing the volume geometry of the structure
  • Assign the following 4 attributes to the blockset
    • Attribute 1 -- Density of structure (solid volume)
    • Attribute 2 -- Acceleration in x-direction
    • Attribute 3 -- Acceleration in y-direction
    • Attribute 4 -- Acceleration in z-direction

Example: How water pressure and self weight are applied: reservoir2

Script Attached: water_reservoir.jou (CUBIT journal)

Contributor: Dimitrios Dimitriou (MSc Student at Glasgow University)


Analysis procedure

To run the analysis cd into mofem build directory and example/elasticity. Use the following command to run the executable.

$ mpirun -np 2 ./elasticity -my_file water_reservoir1.cub -ksp_type fgmres -pc_type lu -pc_factor_mat_solver_package superlu_dist -ksp_monitor -my_order 2 -my_max_post_proc_ref_level 2

Breakthrough the command is described as follows:

  • mpirun mpi library (specify location if an alias does not exist)
  • -np 2 use 2 processure to run in parallel
  • ./elasticity execute the program
  • -my_file filename.cub declare the mesh file
  • -ksp_type type of krylov solver used in PetSc
  • -pc_type pre-conditioner in use
  • -pc_factor_mat_solver_package solver package in use for adequate PC used in parallel
  • -ksp_monitor shows summary of linear solution
  • -my_order polynomial approximation order - uses hierarchical higher order approximation
  • -my_max_pot_proc_ref_level level of refinement for post processing. level 0 - no refinement, level 1 - edges are refined into 2 edges each, tris into 4 tris each, tets into 8 tets.

Result files should be saved in out.vtk and out_post_proc.vtk. Paraview could be utilised to visualize the results.


Results

While out.vtk contains displacement field only, stresses, strains and principal stresses are computed for the post processing mesh (out_post_proc.vtk).

disp_deformation

Figure 3. Scaled deformation of concrete reservoir filled to 1.00 (fully filled).

disp_all_levels

Figure 4. Scaled deformation for various water levels, 0.24 left image -- 1.00 right image.


Reinforcement Layout

In the following example two maximal principal stresses 22 and 33 are computed from the eigen values and vectors of the resultant stresses. Only values of stresses larger than 0, i.e. directions of concrete subjected to tensions are plotted. Moreover principal stress direction is resprenetd by lines which give engineer guidance how to design steel reinforcement. On following figures, the length of lines represent magnitude of stress.

A Paraview state file has been create for automatic presentation of principal stress for the resultant post-processing mesh (out_post_proc.vtk). Load this state and select your post-processing mesh to view principal stress 22 and 33.

Plotting_reinforcement.pvsm (Paraview State File)

Proceducre for Paraview to plot principal stresses without using the state file (Plotting_reinforcement.pvsm)

  • open your post processing mesh (out_post_proc.vtk) in Paraview
  • Go Filters -> Alphabetical -> Extract Surface (this will extra the data on the surface of the model only to speed up the follow command)
  • Go Filters -> Alphabetical -> Calculator
    • Enter a name (ex EigenValue2) for Result Array Name under Properties tab (Figure 5)
    • Create a threshold - in this case we are filtering values about 0, inserting the following (Figure 5)
    • if(PRIN_STRESS_VALUES_Y>0,PRIN_STRESS_VALUES_Y,0)
    • 0 can be replace by the tensile strength of concrete and hence omitting stresses carried by concrete
    • Repeat another calculation for PRIN_STRESS_VALUES_Z and name it EigenValue3

pool_slice

Figure 5. Paraview Calculator Setup

  • To show these one parent of reinforcement go Filters -> Alphabetical -> Glyph
    • Select Vector PRIN_STRESS_VECT2 under Properties tab (Figure 6)
    • Choose Line type for Glyph type
    • Select scalar under Scale Mode and choose EigenValue2 as Scalars (Figure 7)
    • Use 50000 for Maximum Number of Points (Figure 7)

pool_slice

Figure 6. Glyph Setup 1

pool_slice

Figure 7. Glyph Setup 2

  • Create another Glyph using PRIN_STRESS_VECT3 and EigenValue3.

Examples of Reinforcement

Inside Wall Reinforcement Outside Wall Reinforcement
disp_all_levels disp_all_levels
Bottom-side Floor Reinforcement Top-side Floor Reinforcement
disp_all_levels disp_all_levels
Floor-Wall Reinforcement Wall-Wall Reinforcement
disp_all_levels disp_all_levels
  • Created by Michael Cortis
  • any difficulties or suggestions email cmatgu@googlegroups.com

Enjoy!!!
pool_graphic

Updated