Elmer electrostatics FEM

About the development of the FEM module/workbench.

Moderator: bernd

User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Elmer electrostatics FEM

Post by bernd »

HoWil wrote: ping
HoWil
Veteran
Posts: 1279
Joined: Sun Jun 14, 2015 7:31 pm
Location: Austria

Re: Elmer electrostatics FEM

Post by HoWil »

bernd wrote: Sat Jan 04, 2020 8:46 am
HoWil wrote: ping
Did anything change?
I tested the following appimage and the 0.19 from ppa and both do not work.

In 0.18 the Elmer solver is not run correctly. Only stating "Executing solver..." in the task-view but nothing more. Therefore, no .vtu files can be read back into FC. Manually executing Elmersolver solves the case.sif file without problem and generates the correct .vtu file:

Code: Select all

$ ElmerSolver case.sif 
ELMER SOLVER (v 8.4) STARTED AT: 2020/01/09 20:58:26
ParCommInit:  Initialize #PEs:            1
MAIN: 
MAIN: =============================================================
MAIN: ElmerSolver finite element software, Welcome!
MAIN: This program is free software licensed under (L)GPL
MAIN: Copyright 1st April 1995 - , CSC - IT Center for Science Ltd.
MAIN: Webpage http://www.csc.fi/elmer, Email elmeradm@csc.fi
MAIN: Version: 8.4 (Rev: unknown, Compiled: 2020-01-08)
MAIN:  Running one task without MPI parallelization.
MAIN:  Running with just one thread per task.
MAIN:  HYPRE library linked in.
MAIN:  MUMPS library linked in.
MAIN: =============================================================
MAIN: 
MAIN: 
MAIN: -------------------------------------
MAIN: Reading Model: case.sif
LoadInputFile: Scanning input file: case.sif
LoadInputFile: Loading input file: case.sif
Model Input:  Unlisted keyword: [force 1 normalize by area] in section: [boundary condition 2]
Model Input:  Unlisted keyword: [force 2 normalize by area] in section: [boundary condition 2]
Model Input:  Unlisted keyword: [force 3 normalize by area] in section: [boundary condition 2]
Loading user function library: [StressSolve]...[StressSolver_Init0]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_Init0]
LoadMesh: Starting
ElmerAsciiMesh: Performing step: 1
LoadMesh: Base mesh name: .
LoadMesh: Reading header info from file: ./mesh.header
InitializeMesh: Number of nodes in mesh: 521
InitializeMesh: Number of bulk elements in mesh: 218
InitializeMesh: Number of boundary elements in mesh: 256
InitializeMesh: Initial number of max element nodes: 10
ElmerAsciiMesh: Performing step: 2
LoadMesh: Reading nodes from file: ./mesh.nodes
LoadMesh: Performing coordinate mapping
SetMeshDimension: Dimension of mesh is: 3
SetMeshDimension: Max dimension of mesh is: 3
ElmerAsciiMesh: Performing step: 3
LoadMesh: Reading bulk elements from file: ./mesh.elements
ElmerAsciiMesh: Performing step: 4
LoadMesh: Reading boundary elements from file: ./mesh.boundary
LoadMesh: Performing node mapping
ReadTargetNames: Reading names info from file: ./mesh.names
WARNING:: ReadTargetNames: Could not map name to Body nor BC: bnry4
LoadMesh: Remapping bodies
LoadMesh: Minimum initial body index: 3
LoadMesh: Maximum initial body index: 3
LoadMesh: Remapping boundaries
LoadMesh: Minimum initial boundary index: 1
LoadMesh: Maximum initial boundary index: 4
ElmerAsciiMesh: Performing step: 5
ElmerAsciiMesh: Performing step: 6
LoadMesh: Loading mesh done
LoadMesh: Preparing mesh done
LoadMesh: Elapsed REAL time:     0.0032 (s)
MeshStabParams: Computing stabilization parameters
MeshStabParams: Elapsed REAL time:     0.1079 (s)
MAIN: -------------------------------------
AddSolvers: Setting up 2 solvers
AddSolvers: Setting up solver 1: elasticity
AddEquationBasics: Using procedure: StressSolve StressSolver
AddEquationBasics: Setting up solver: elasticity
Loading user function library: [StressSolve]...[StressSolver_Init]
StressSolve_init: 
StressSolve_init: --------------------------------------------------
StressSolve_init: Solving displacements from linear elasticity model
StressSolve_init: --------------------------------------------------
Loading user function library: [StressSolve]...[StressSolver_bulk]
Loading user function library: [StressSolve]...[StressSolver]
AddEquationBasics: Creating standard variable: displacement
OptimizeBandwidth: ---------------------------------------------------------
OptimizeBandwidth: Computing matrix structure for: elasticity...done.
OptimizeBandwidth: Half bandwidth without optimization: 519
OptimizeBandwidth: 
OptimizeBandwidth: Bandwidth Optimization ...done.
OptimizeBandwidth: Half bandwidth after optimization: 108
OptimizeBandwidth: ---------------------------------------------------------
AddSolvers: Setting up solver 2: resultoutput
AddEquationBasics: Using procedure: ResultOutputSolve ResultOutputSolver
AddEquationBasics: Setting up solver: resultoutput
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_Init]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_bulk]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver]
AddMeshCoordinatesAndTime: Setting mesh coordinates and time
SetInitialConditions: Setting up initial conditions (if any)
MAIN: 
MAIN: -------------------------------------
MAIN:  Steady state iteration:            1
MAIN: -------------------------------------
MAIN: 
ComputeNodalWeights: Computing weights for the mesh entities
 BC weight:           1   999999.99999999965     
 BC weight:           2   999999.99999999965     
 BF weight:           1   0.0000000000000000     
 Body weight:           1   7999999999.9999647     
 Mat weight:           1   7999999999.9999647     
CalculateEntityWeights: All done
ListSetCoefficients: Normalizing > force 1 < by  1.00000E-06
ListSetCoefficients: Normalizing > force 2 < by  1.00000E-06
ListSetCoefficients: Normalizing > force 3 < by  1.00000E-06
SingleSolver: Attempting to call solver
SingleSolver: Solver Equation string is: elasticity
StressSolve: 
StressSolve: --------------------------------------------------
StressSolve: Solving displacements from linear elasticity model
StressSolve: --------------------------------------------------
DefaultStart: Starting solver: elasticity
StressSolve: Starting assembly...
StressSolve: Assembly:
StressSolve: Bulk assembly done
DefUtils::DefaultDirichletBCs: Setting Dirichlet boundary conditions
EnforceDirichletConditions: Applying Dirichlet conditions using scaled diagonal
ScaleLinearSystem: Scaling diagonal entries to unity
DefUtils::DefaultDirichletBCs: Dirichlet boundary conditions set
StressSolve: Set boundaries done
DefaultSolve: Solving linear system with default routines
SolveSystem: Solving linear system
SolveLinearSystem: Assuming real valued linear system
ScaleLinearSystem: Scaling diagonal entries to unity
SolveSystem: Linear System Solver: iterative
SolveSystem: Linear System Preconditioning: ilu0
SolveSystem: Serial linear System Solver: iterative
IterSolver: Using iterative method: bicgstab
CRS_IncompleteLU: ILU(0) (Real), Starting Factorization:
CRS_IncompleteLU: Allocated LU matrix of size: 96975
CRS_IncompleteLU: ILU(0) (Real), NOF nonzeros:     96976
CRS_IncompleteLU: ILU(0) (Real), filling (%) :       100
CRS_IncompleteLU: ILU(0) (Real), Factorization ready at (s):     0.00
       1 0.1077E+01
       2 0.1152E+01
       3 0.1061E+01
       4 0.1114E+01
       5 0.1161E+01
       6 0.1232E+01
       7 0.1250E+01
       8 0.1266E+01
       9 0.1267E+01
      10 0.1264E+01
      11 0.1245E+01
      12 0.1247E+01
      13 0.1279E+01
      14 0.1328E+01
      15 0.1345E+01
      16 0.1349E+01
      17 0.1310E+01
      18 0.1229E+01
      19 0.1109E+01
      20 0.1023E+01
      21 0.1070E+01
      22 0.1111E+01
      23 0.1118E+01
      24 0.1120E+01
      25 0.1239E+01
      26 0.1068E+01
      27 0.1104E+01
      28 0.1093E+01
      29 0.1086E+01
      30 0.1102E+01
      31 0.1136E+01
      32 0.1148E+01
      33 0.1260E+01
      34 0.1128E+01
      35 0.1100E+01
      36 0.1124E+01
      37 0.9639E+00
      38 0.8780E+00
      39 0.8306E+00
      40 0.8421E+00
      41 0.6652E+00
      42 0.5205E+00
      43 0.5087E+00
      44 0.5266E+00
      45 0.5375E+00
      46 0.5137E+00
      47 0.5070E+00
      48 0.5070E+00
      49 0.5096E+00
      50 0.4256E+00
      51 0.4181E+00
      52 0.3686E+00
      53 0.3079E+00
      54 0.2990E+00
      55 0.2966E+00
      56 0.2580E+00
      57 0.2328E+00
      58 0.2257E+00
      59 0.1912E+00
      60 0.1770E+00
      61 0.1305E+00
      62 0.1078E+00
      63 0.1128E+00
      64 0.1104E+00
      65 0.8214E-01
      66 0.8062E-01
      67 0.8018E-01
      68 0.7526E-01
      69 0.6937E-01
      70 0.9271E-01
      71 0.1314E+00
      72 0.1298E+00
      73 0.1086E-01
      74 0.1322E-01
      75 0.1178E-01
      76 0.1129E-01
      77 0.1110E-01
      78 0.9088E-02
      79 0.6014E-02
      80 0.5233E-02
      81 0.5344E-02
      82 0.1135E-01
      83 0.4043E-02
      84 0.4103E-02
      85 0.4086E-02
      86 0.4070E-02
      87 0.4070E-02
      88 0.4047E-02
      89 0.3939E-02
      90 0.4377E-02
      91 0.4282E-02
      92 0.1205E-01
      93 0.7664E-02
      94 0.7043E-02
      95 0.6001E-02
      96 0.2735E-02
      97 0.2717E-02
      98 0.2722E-02
      99 0.2720E-02
     100 0.2720E-02
     101 0.2720E-02
     102 0.2720E-02
     103 0.2721E-02
     104 0.2646E-02
     105 0.2592E-02
     106 0.2592E-02
     107 0.2587E-02
     108 0.2591E-02
     109 0.2574E-02
     110 0.2567E-02
     111 0.1977E-02
     112 0.2139E-02
     113 0.5814E-02
     114 0.6271E-02
     115 0.6232E-02
     116 0.2573E-01
     117 0.5299E-02
     118 0.1317E-01
     119 0.8515E-02
     120 0.1361E-01
     121 0.1645E-02
     122 0.1128E-02
     123 0.1999E-02
     124 0.1895E-02
     125 0.2377E-02
     126 0.2243E-03
     127 0.7065E-03
     128 0.4919E-04
     129 0.2867E-04
     130 0.6138E-04
     131 0.7715E-04
     132 0.5519E-04
     133 0.1519E-03
     134 0.1402E-03
     135 0.1427E-04
     136 0.5708E-04
     137 0.5802E-04
     138 0.1233E-03
     139 0.1533E-05
     140 0.4250E-06
     141 0.4539E-06
     142 0.2072E-06
     143 0.3860E-06
     144 0.5718E-06
     145 0.5743E-06
     146 0.6246E-06
     147 0.4986E-06
     148 0.9066E-07
     149 0.2117E-08
     149 0.2117E-08
ComputeNorm: Computing norm of solution
ComputeChange: NS (ITER=1) (NRM,RELC): (  27.008495      2.0000000     ) :: elasticity
DefaultFinish: Finished solver: elasticity
StressSolver: All done
StressSolver: ------------------------------------------
Loading user function library: [StressSolve]...[StressSolver_post]
ComputeNorm: Computing norm of solution
ComputeChange: SS (ITER=1) (NRM,RELC): (  27.008495      2.0000000     ) :: elasticity
SingleSolver: Attempting to call solver
SingleSolver: Solver Equation string is: resultoutput
ResultOutputSolver: -------------------------------------
ResultOutputSolve: Saving with prefix: case
ResultOutputSolver: Working on mesh: .
ResultOutputSolver: Dimension of mesh is: 3
ResultOutputSolver: Creating list for saving - if not present
CreateListForSaving: Field Variables for Saving
CreateListForSaving: Vector Field 1: displacement
ResultOutputSolver: Saving in unstructured VTK XML (.vtu) format
VtuOutputSolver: Saving results in VTK XML format with prefix: case
VtuOutputSolver: Saving number of partitions: 1
SolverOutputDirectory: Creating directory: .
VtuOutputSolver: Full filename base is: ./case
VtuOutputSolver: Number of active elements 474 out of 474
VtuOutputSolver: Number of geometry nodes 521 out of 521
VtuOutputSolver: Total number of geometry nodes to save:     521
VtuOutputSolver: Total number of dof nodes to save:     521
VtuOutputSolver: Total number of elements to save:     474
VtuOutputSolver: Maximum number of eigen/harmonic modes: 5
VtuOutputSolver: Writing the vtu file: ./case_t0001.vtu
AscBinWriteInit: Initializing buffered ascii/binary writing
AscBinWriteInit: Writing in binary
AscBinWriteInit: Writing in double precision
AscBinWriteInit: Writing to unit number: 58
AscBinWriteInit: Size of buffer is: 1000
VtuOutputSolver: Writing nodal fields
VtuOutputSolver: Saving variable: displacement
VtuOutputSolver: Number of nodal fields written: 1
VtuOutputSolver: Writing elemental fields
VtuOutputSolver: Number of elemental fields written: 0
VtuOutputSolver: Writing coordinates for each used node
VtuOutputSolver: Writing the elemental connectivity data
VtuOutputSolver: Writing nodal fields
VtuOutputSolver: Saving variable: displacement
VtuOutputSolver: Writing elemental fields
AscBinWriteFree: Terminating buffered ascii/binary writing
VtuOutputSolver: All done for now
ResultOutputSolver: -------------------------------------
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_post]
ReloadInputFile: Realoading input file
LoadInputFile: Loading input file:
ElmerSolver: *** Elmer Solver: ALL DONE ***
ElmerSolver: The end
SOLVER TOTAL TIME(CPU,REAL):         0.69        0.62
ELMER SOLVER FINISHED AT: 2020/01/09 20:58:27
wilfried@black:/tmp/Cantilever3D/SolverElmer$ pa
pacat                  pamoil                 parsechangelog
pack200                pamon                  parted
pacmd                  pamstack               partprobe
pactl                  pamstretch             partx
padsp                  pamstretch-gen         passwd
pager                  pam_tally              paste
palmtopnm              pam_tally2             pasuspender
pam-auth-update        pam_timestamp_check    patch
pamcut                 pandoc                 patchwork
pamdeinterlace         paperconf              patgen
pamdice                paperconfig            pathchk
pam_extrausers_chkpwd  paplay                 pavucontrol
pam_extrausers_update  paraview               pax11publish
pamfile                parec                  
pam_getenv             parecord               
howil@black:/tmp/Cantilever3D/SolverElmer$ paraview 
Generic Warning: In /build/paraview-lH8wFv/paraview-5.4.1+dfsg3/VTK/Rendering/Volume/vtkVolumeTextureMapper3D.cxx, line 680
vtkVolumeTextureMapper3D::vtkVolumeTextureMapper3D was deprecated for VTK 7.0 and will be removed in a future version.

Generic Warning: In /build/paraview-lH8wFv/paraview-5.4.1+dfsg3/VTK/Rendering/VolumeOpenGL/vtkOpenGLVolumeTextureMapper3D.cxx, line 57
vtkOpenGLVolumeTextureMapper3D::vtkOpenGLVolumeTextureMapper3D was deprecated for VTK 7.0 and will be removed in a future version.


I do not think that path settings are the problem because solving works in 0.19 (see below). EDIT: Manual setting the path to "/usr/bin/ElmerSolver" and "/usr/bin/ElmerGrid" did also not help.

OS: Ubuntu 18.04.3 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16146 (Git) AppImage
Build type: Release
Branch: (HEAD detached at 0.18.4)
Hash: 980bf9060e28555fecd9e3462f68ca74007b70f8
Python version: 3.6.7
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)

EDIT:
Same with
OS: Ubuntu 18.04.3 LTS
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.16117 (Git) AppImage
Build type: Release
Branch: (HEAD detached at 0.18.2)
Hash: dbb4cc6415bac848a294f03b80f65e888d531742
Python version: 3.6.7
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)



In 0.19 no results object is created (I deleted the original one) and the SolverElmerOutput is recreated after clicking somewhere in the tree-view but keeps empty. Nevertheless, the Elmer Solver runs without problems and produces the correct results files (checked the values with Paraview) stored as "case_t0001.vtu" in the right subfolder. The .vtu holds only "displacement" as magnitude, x, y, z values. There are no error-messages in the report-view. EDIT: BTW: The symbol on the elmer solver for recomputing does not fanish.

OS: Ubuntu 18.04.3 LTS (GNOME/gnome)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.
Build type: Release
Python version: 3.6.9
Qt version: 5.9.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)


# The solver output from the task panel:

Code: Select all

Executing solver...
ELMER SOLVER (v 8.4) STARTED AT: 2020/01/09 20:35:05

ParCommInit:  Initialize #PEs:            1
MAIN:
MAIN: =============================================================
MAIN: ElmerSolver finite element software, Welcome!
MAIN: This program is free software licensed under (L)GPL
MAIN: Copyright 1st April 1995 - , CSC - IT Center for Science Ltd.
MAIN: Webpage http://www.csc.fi/elmer, Email elmeradm@csc.fi
MAIN: Version: 8.4 (Rev: unknown, Compiled: 2020-01-08)
MAIN:  Running one task without MPI parallelization.
MAIN:  Running with just one thread per task.
MAIN:  HYPRE library linked in.
MAIN:  MUMPS library linked in.
MAIN: =============================================================
MAIN:
MAIN:
MAIN: -------------------------------------
MAIN: Reading Model: case.sif
LoadInputFile: Scanning input file: case.sif
LoadInputFile: Loading input file: case.sif
Model Input:  Unlisted keyword: [force 1 normalize by area] in section: [boundary condition 2]
Model Input:  Unlisted keyword: [force 2 normalize by area] in section: [boundary condition 2]
Model Input:  Unlisted keyword: [force 3 normalize by area] in section: [boundary condition 2]
Loading user function library: [StressSolve]...[StressSolver_Init0]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_Init0]
LoadMesh: Starting
ElmerAsciiMesh: Performing step: 1
LoadMesh: Base mesh name: .
LoadMesh: Reading header info from file: ./mesh.header
InitializeMesh: Number of nodes in mesh: 521
InitializeMesh: Number of bulk elements in mesh: 218
InitializeMesh: Number of boundary elements in mesh: 256
InitializeMesh: Initial number of max element nodes: 10
ElmerAsciiMesh: Performing step: 2
LoadMesh: Reading nodes from file: ./mesh.nodes
LoadMesh: Performing coordinate mapping
SetMeshDimension: Dimension of mesh is: 3
SetMeshDimension: Max dimension of mesh is: 3
ElmerAsciiMesh: Performing step: 3
LoadMesh: Reading bulk elements from file: ./mesh.elements
ElmerAsciiMesh: Performing step: 4
LoadMesh: Reading boundary elements from file: ./mesh.boundary
LoadMesh: Performing node mapping
ReadTargetNames: Reading names info from file: ./mesh.names
WARNING:: ReadTargetNames: Could not map name to Body nor BC: bnry4
LoadMesh: Remapping bodies
LoadMesh: Minimum initial body index: 3
LoadMesh: Maximum initial body index: 3
LoadMesh: Remapping boundaries
LoadMesh: Minimum initial boundary index: 1
LoadMesh: Maximum initial boundary index: 4
ElmerAsciiMesh: Performing step: 5
ElmerAsciiMesh: Performing step: 6
LoadMesh: Loading mesh done
LoadMesh: Preparing mesh done
LoadMesh: Elapsed REAL time:     0.0066 (s)
MeshStabParams: Computing stabilization parameters
MeshStabParams: Elapsed REAL time:     0.0998 (s)
MAIN: -------------------------------------
AddSolvers: Setting up 2 solvers
AddSolvers: Setting up solver 1: elasticity
AddEquationBasics: Using procedure: StressSolve StressSolver
AddEquationBasics: Setting up solver: elasticity
Loading user function library: [StressSolve]...[StressSolver_Init]
StressSolve_init:
StressSolve_init: --------------------------------------------------
StressSolve_init: Solving displacements from linear elasticity model
StressSolve_init: --------------------------------------------------
Loading user function library: [StressSolve]...[StressSolver_bulk]
Loading user function library: [StressSolve]...[StressSolver]
AddEquationBasics: Creating standard variable: displacement
OptimizeBandwidth: ---------------------------------------------------------
OptimizeBandwidth: Computing matrix structure for: elasticity...done.
OptimizeBandwidth: Half bandwidth without optimization: 519
OptimizeBandwidth:
OptimizeBandwidth: Bandwidth Optimization ...done.
OptimizeBandwidth: Half bandwidth after optimization: 108
OptimizeBandwidth: ---------------------------------------------------------
AddSolvers: Setting up solver 2: resultoutput
AddEquationBasics: Using procedure: ResultOutputSolve ResultOutputSolver
AddEquationBasics: Setting up solver: resultoutput
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_Init]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_bulk]
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver]
AddMeshCoordinatesAndTime: Setting mesh coordinates and time
SetInitialConditions: Setting up initial conditions (if any)
MAIN:
MAIN: -------------------------------------
MAIN:  Steady state iteration:            1
MAIN: -------------------------------------
MAIN:
ComputeNodalWeights: Computing weights for the mesh entities
 BC weight:           1   999999.99999999965
 BC weight:           2   999999.99999999965
 BF weight:           1   0.0000000000000000
 Body weight:           1   7999999999.9999647
 Mat weight:           1   7999999999.9999647
CalculateEntityWeights: All done
ListSetCoefficients: Normalizing > force 1 < by  1.00000E-06
ListSetCoefficients: Normalizing > force 2 < by  1.00000E-06
ListSetCoefficients: Normalizing > force 3 < by  1.00000E-06
SingleSolver: Attempting to call solver
SingleSolver: Solver Equation string is: elasticity
StressSolve:
StressSolve: --------------------------------------------------
StressSolve: Solving displacements from linear elasticity model
StressSolve: --------------------------------------------------
DefaultStart: Starting solver: elasticity
StressSolve: Starting assembly...
StressSolve: Assembly:
StressSolve: Bulk assembly done
DefUtils::DefaultDirichletBCs: Setting Dirichlet boundary conditions
EnforceDirichletConditions: Applying Dirichlet conditions using scaled diagonal
ScaleLinearSystem: Scaling diagonal entries to unity
DefUtils::DefaultDirichletBCs: Dirichlet boundary conditions set
StressSolve: Set boundaries done
DefaultSolve: Solving linear system with default routines
SolveSystem: Solving linear system
SolveLinearSystem: Assuming real valued linear system
ScaleLinearSystem: Scaling diagonal entries to unity
SolveSystem: Linear System Solver: iterative
SolveSystem: Linear System Preconditioning: ilu0
SolveSystem: Serial linear System Solver: iterative
IterSolver: Using iterative method: bicgstab
CRS_IncompleteLU: ILU(0) (Real), Starting Factorization:
CRS_IncompleteLU: Allocated LU matrix of size: 96975
CRS_IncompleteLU: ILU(0) (Real), NOF nonzeros:     96976
CRS_IncompleteLU: ILU(0) (Real), filling (%) :       100
CRS_IncompleteLU: ILU(0) (Real), Factorization ready at (s):     0.00
       1 0.1077E+01
       2 0.1152E+01
       3 0.1061E+01
       4 0.1114E+01
       5 0.1161E+01
       6 0.1232E+01
       7 0.1250E+01
       8 0.1266E+01
       9 0.1267E+01
      10 0.1264E+01
      11 0.1245E+01
      12 0.1247E+01
      13 0.1279E+01
      14 0.1328E+01
      15 0.1345E+01
      16 0.1349E+01
      17 0.1310E+01
      18 0.1229E+01
      19 0.1109E+01
      20 0.1023E+01
      21 0.1070E+01
      22 0.1111E+01
      23 0.1118E+01
      24 0.1120E+01
      25 0.1239E+01
      26 0.1068E+01
      27 0.1104E+01
      28 0.1093E+01
      29 0.1086E+01
      30 0.1102E+01
      31 0.1136E+01
      32 0.1148E+01
      33 0.1260E+01
      34 0.1128E+01
      35 0.1100E+01
      36 0.1124E+01
      37 0.9639E+00
      38 0.8780E+00
      39 0.8306E+00
      40 0.8421E+00
      41 0.6652E+00
      42 0.5205E+00
      43 0.5087E+00
      44 0.5266E+00
      45 0.5375E+00
      46 0.5137E+00
      47 0.5070E+00
      48 0.5070E+00
      49 0.5096E+00
      50 0.4256E+00
      51 0.4181E+00
      52 0.3686E+00
      53 0.3079E+00
      54 0.2990E+00
      55 0.2966E+00
      56 0.2580E+00
      57 0.2328E+00
      58 0.2257E+00
      59 0.1912E+00
      60 0.1770E+00
      61 0.1305E+00
      62 0.1078E+00
      63 0.1128E+00
      64 0.1104E+00
      65 0.8214E-01
      66 0.8062E-01
      67 0.8018E-01
      68 0.7526E-01
      69 0.6937E-01
      70 0.9271E-01
      71 0.1314E+00
      72 0.1298E+00
      73 0.1086E-01
      74 0.1322E-01
      75 0.1178E-01
      76 0.1129E-01
      77 0.1110E-01
      78 0.9088E-02
      79 0.6014E-02
      80 0.5233E-02
      81 0.5344E-02
      82 0.1135E-01
      83 0.4043E-02
      84 0.4103E-02
      85 0.4086E-02
      86 0.4070E-02
      87 0.4070E-02
      88 0.4047E-02
      89 0.3939E-02
      90 0.4377E-02
      91 0.4282E-02
      92 0.1205E-01
      93 0.7664E-02
      94 0.7043E-02
      95 0.6001E-02
      96 0.2735E-02
      97 0.2717E-02
      98 0.2722E-02
      99 0.2720E-02
     100 0.2720E-02
     101 0.2720E-02
     102 0.2720E-02
     103 0.2721E-02
     104 0.2646E-02
     105 0.2592E-02
     106 0.2592E-02
     107 0.2587E-02
     108 0.2591E-02
     109 0.2574E-02
     110 0.2567E-02
     111 0.1977E-02
     112 0.2139E-02
     113 0.5814E-02
     114 0.6271E-02
     115 0.6232E-02
     116 0.2573E-01
     117 0.5299E-02
     118 0.1317E-01
     119 0.8515E-02
     120 0.1361E-01
     121 0.1645E-02
     122 0.1128E-02
     123 0.1999E-02
     124 0.1895E-02
     125 0.2377E-02
     126 0.2243E-03
     127 0.7065E-03
     128 0.4919E-04
     129 0.2867E-04
     130 0.6138E-04
     131 0.7715E-04
     132 0.5519E-04
     133 0.1519E-03
     134 0.1402E-03
     135 0.1427E-04
     136 0.5708E-04
     137 0.5802E-04
     138 0.1233E-03
     139 0.1533E-05
     140 0.4250E-06
     141 0.4539E-06
     142 0.2072E-06
     143 0.3860E-06
     144 0.5718E-06
     145 0.5743E-06
     146 0.6246E-06
     147 0.4986E-06
     148 0.9066E-07
     149 0.2117E-08
     149 0.2117E-08
ComputeNorm: Computing norm of solution
ComputeChange: NS (ITER=1) (NRM,RELC): (  27.008495      2.0000000     ) :: elasticity
DefaultFinish: Finished solver: elasticity
StressSolver: All done
StressSolver: ------------------------------------------
Loading user function library: [StressSolve]...[StressSolver_post]
ComputeNorm: Computing norm of solution
ComputeChange: SS (ITER=1) (NRM,RELC): (  27.008495      2.0000000     ) :: elasticity
SingleSolver: Attempting to call solver
SingleSolver: Solver Equation string is: resultoutput
ResultOutputSolver: -------------------------------------
ResultOutputSolve: Saving with prefix: case
ResultOutputSolver: Working on mesh: .
ResultOutputSolver: Dimension of mesh is: 3
ResultOutputSolver: Creating list for saving - if not present
CreateListForSaving: Field Variables for Saving
CreateListForSaving: Vector Field 1: displacement
ResultOutputSolver: Saving in unstructured VTK XML (.vtu) format
VtuOutputSolver: Saving results in VTK XML format with prefix: case
VtuOutputSolver: Saving number of partitions: 1
SolverOutputDirectory: Creating directory: .
VtuOutputSolver: Full filename base is: ./case
VtuOutputSolver: Number of active elements 474 out of 474
VtuOutputSolver: Number of geometry nodes 521 out of 521
VtuOutputSolver: Total number of geometry nodes to save:     521
VtuOutputSolver: Total number of dof nodes to save:     521
VtuOutputSolver: Total number of elements to save:     474
VtuOutputSolver: Maximum number of eigen/harmonic modes: 5
VtuOutputSolver: Writing the vtu file: ./case_t0001.vtu
AscBinWriteInit: Initializing buffered ascii/binary writing
AscBinWriteInit: Writing in binary
AscBinWriteInit: Writing in double precision
AscBinWriteInit: Writing to unit number: 58
AscBinWriteInit: Size of buffer is: 1000
VtuOutputSolver: Writing nodal fields
VtuOutputSolver: Saving variable: displacement
VtuOutputSolver: Number of nodal fields written: 1
VtuOutputSolver: Writing elemental fields
VtuOutputSolver: Number of elemental fields written: 0
VtuOutputSolver: Writing coordinates for each used node
VtuOutputSolver: Writing the elemental connectivity data
VtuOutputSolver: Writing nodal fields
VtuOutputSolver: Saving variable: displacement
VtuOutputSolver: Writing elemental fields
AscBinWriteFree: Terminating buffered ascii/binary writing
VtuOutputSolver: All done for now
ResultOutputSolver: -------------------------------------
Loading user function library: [ResultOutputSolve]...[ResultOutputSolver_post]
ReloadInputFile: Realoading input file
LoadInputFile: Loading input file:
ElmerSolver: *** Elmer Solver: ALL DONE ***
ElmerSolver: The end
SOLVER TOTAL TIME(CPU,REAL):         0.82        0.74
ELMER SOLVER FINISHED AT: 2020/01/09 20:35:06
Both 0.18 and 0.19 use the default vales for the elmersolver and elemergrid ("Search in the known binary directories").

So, both 0.18 and 0.19 do not work for/with different reasons.
Hope this helps somehow.
If there is something more specific I can do, please let me know.
HoWil
Veteran
Posts: 1279
Joined: Sun Jun 14, 2015 7:31 pm
Location: Austria

Re: Elmer electrostatics FEM

Post by HoWil »

bernd wrote: Sat Jan 04, 2020 8:46 am
HoWil wrote: ping
What can I do?
HoWil
Veteran
Posts: 1279
Joined: Sun Jun 14, 2015 7:31 pm
Location: Austria

Re: Elmer electrostatics FEM

Post by HoWil »

Dear Ted,
We are back in business after drifting away because of some stupid problems due to newly named result files (see here).
TadasK wrote: Fri Dec 06, 2019 6:42 pm Could somebody provide a description or a video of using Freecad for electrostatic problems?

My main concerns:
1. How to model an enclosed far-field sphere?
2. How to define the relative permittivities of the surfaces?
Both is not yet implemented in FC.
For the far-field boundary condition there is a tutorial "6. Electrostatic equation – Capacitance of two balls" on page 30 in http://www.nic.funet.fi/index/elmer/doc ... orials.pdf .
So, if I do not oversee a thing this should be implemented easily (even if right now I do not have any clue when to start). Please see https://www.freecadweb.org/wiki/Add_FEM ... t_Tutorial if you are willing to add the constraint yourself (several files should have been moved around but the basic approach is still the same @Bernd: can you please comment on this).

Do you have any Elmer tutorials for the definition of the relative permittivity on a surface ?

BR,
HoWil
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Elmer electrostatics FEM

Post by bernd »

HoWil wrote: Mon Jan 27, 2020 9:13 pm So, if I do not oversee a thing this should be implemented easily (even if right now I do not have any clue when to start). Please see https://www.freecadweb.org/wiki/Add_FEM ... t_Tutorial if you are willing to add the constraint yourself (several files should have been moved around but the basic approach is still the same @Bernd: can you please comment on this).
yes the basic approach is still the same. here can be seen how to implement a new constraint for the Calculix writer. Last four commits https://github.com/berndhahnebach/FreeC ... ts/ef0fca6 This may help too.
HoWil
Veteran
Posts: 1279
Joined: Sun Jun 14, 2015 7:31 pm
Location: Austria

Re: Elmer electrostatics FEM

Post by HoWil »

TadasK wrote: Fri Dec 06, 2019 6:42 pm Ping
Dear Ted,
Attached you will find a first example of a unfinished model for the requested Tutorial 6. I just tested if and how easy I can set up the model.
There is no farfield boundary condition now and also no capacity calculation.
In a next step I will test if I can add these settings by hand into the .sif file.
I had to clear the mesh and the results to get the filesize below 1MB for attaching it to this forum-entry.
I also (re-) found a issue when setting for 'ConstraintElectrostaticPotential' : the value 0 (zero) is ignored as input; I entered "0,01 mV" instead.
BR,
HoWil

OS: Ubuntu 18.04.3 LTS (GNOME/gnome)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.
Build type: Release
Python version: 3.6.9
Qt version: 5.9.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)
Attachments
Results opened in paraview.
Results opened in paraview.
Screenshot from 2020-02-08 21-06-20.png (248.57 KiB) Viewed 1922 times
Results opened in FC.
Results opened in FC.
Screenshot from 2020-02-08 21-04-52.png (757.63 KiB) Viewed 1922 times
Tutorial_6 - Electrostatic equation – Capacitance of two balls.FCStd
(29.4 KiB) Downloaded 37 times
HoWil
Veteran
Posts: 1279
Joined: Sun Jun 14, 2015 7:31 pm
Location: Austria

Re: Elmer electrostatics FEM

Post by HoWil »

Dear Ted,
Attached you will find a second example of a manually modified model for the requested Tutorial 6.
The code for calculating the capacitance matrix, the boundary conditions for the capacitance calculation and the farfield boundary condition were set manually in the exported .sif file (between 'write' and 'run' in the 'Solver Control' dialogue).
I had to clear the mesh and the results to get the filesize below 1MB for attaching it to this forum-entry.
The results for the capacitance match the results in the tutorial but one has to keep the base-unit mm of FC in mind (resulting in the additional E+03 in 'StatElecSolve: 1 2 1.66615E+03' see also 'Dimensions' of Farad on https://de.wikipedia.org/wiki/Farad)
BR,
HoWil

Code: Select all

OS: Ubuntu 18.04.4 LTS (GNOME/gnome)
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.
Build type: Release
Python version: 3.6.9
Qt version: 5.9.5
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: English/UnitedStates (en_US)
The results for the electrostatic potential on the clipping plane are similar to the one given in the tutorial.
The results for the electrostatic potential on the clipping plane are similar to the one given in the tutorial.
Screenshot from 2020-02-12 07-29-09.png (321.27 KiB) Viewed 1878 times
A relatively coarse mesh was used.
A relatively coarse mesh was used.
Screenshot from 2020-02-12 07-29-33.png (452.9 KiB) Viewed 1878 times

Code: Select all

! All changes were marked as 'manually added' or 'manually changed'

Check Keywords Warn

Header
  Mesh DB "."
End

Solver 1
  Bubbles = Logical False
  Calculate Electric Energy = Logical False
  Calculate Electric Field = Logical True
  Calculate Surface Charge = Logical False
  Calculate Capacitance Matrix = True  ! manually added
  Displace mesh = Logical False
  Equation = String "Stat Elec Solver"
  Exec Solver = String "Always"
  Linear System Abort Not Converged = Logical False
  Linear System Convergence Tolerance = Real 1e-08
  Linear System Iterative Method = String "BiCGStab"
  Linear System Max Iterations = Integer 500
  Linear System Precondition Recompute = Integer 1
  Linear System Preconditioning = String "ILU0"
  Linear System Residual Output = Integer 1
  Linear System Solver = String "Iterative"
  Optimize Bandwidth = Logical True
  Procedure = File "StatElecSolve" "StatElecSolver"
  Stabilize = Logical True
  Steady State Convergence Tolerance = Real 1e-05
  Variable = String "Potential"
  Variable DOFs = Integer 1
End

Simulation 
  BDF Order = Integer 1
  Coordinate Mapping(3) = Integer 1 2 3
  Coordinate System = String "Cartesian 3D"
  Output Intervals = Integer 1
  Simulation Type = String "Steady state"
  Steady State Max Iterations = Integer 1
  Steady State Min Iterations = Integer 0
  Timestepping Method = String "BDF"
  Use Mesh Names = Logical True
End

Constants 
  Permittivity Of Vacuum = Real 1.0 ! manually changed from 8.8542e-15
End

Body 1
  Equation = Integer 1
  Material = Integer 1
  Name = String "Solid1"
End

Material 1
  Relative Permittivity = Real 1.0
End

Equation 1
  Active Solvers(2) = Integer 1 2
End

Solver 2
  Equation = String "ResultOutput"
  Exec Solver = String "After simulation"
  Output File Name = File "case"
  Procedure = File "ResultOutputSolve" "ResultOutputSolver"
  Vtu Format = Logical True
End

Boundary Condition 1
  Name = String "Face2"
  !Potential = Real 10.0
  Capacitance Body = 1 ! manually added
End

Boundary Condition 2
  Name = String "Face3"
  !Potential = Real 1000000.0 ! manually added
  Capacitance Body = 2 ! manually added
End

Boundary Condition 3
  Name = String "Face1"
  !Potential Constant = Logical True ! manually added
  Electric Infinity BC = True ! manually added
End

Attachments
Tutorial_6 - Electrostatic equation – Capacitance of two balls.FCStd
The mesh was cleared and the results deleted to get the file size below 1MB.
(26.01 KiB) Downloaded 41 times
HoWil
Veteran
Posts: 1279
Joined: Sun Jun 14, 2015 7:31 pm
Location: Austria

Re: Elmer electrostatics FEM

Post by HoWil »

HoWil wrote: Sat Feb 08, 2020 8:49 pm I also (re-) found a issue when setting for 'ConstraintElectrostaticPotential' : the value 0 (zero) is ignored as input; I entered "0,01 mV" instead.
This is related to a missing check of 'obj.PotentialEnabled' in '/Mod/Fem/femsolver/elmer/writer.py' (https://github.com/FreeCAD/FreeCAD/blob ... /writer.py). If this is the same for obj.Velocity[X,Y,Z]Enabled in FluidFlow has to be checked separately.

The lines 356-358 in writer.py have to be changed to

Code: Select all

                    if obj.PotentialEnabled:  # HoWil: was added
                        if hasattr(obj, 'Potential'):  # HoWil:has to be changed from " if obj.Potential:"
                            potential = getFromUi(obj.Potential, "V", "M*L^2/(T^3 * I)")
                            self._boundary(name, "Potential", potential)
bernd wrote: Ping
Hi Bernd, Can you please change this. I do not have any running git system at hand and do not even know how to use it anymore :roll: :oops: :shock: .
For future changes I promise I will make proper commits :D .
User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Elmer electrostatics FEM

Post by bernd »

User avatar
bernd
Veteran
Posts: 12851
Joined: Sun Sep 08, 2013 8:07 pm
Location: Zürich, Switzerland
Contact:

Re: Elmer electrostatics FEM

Post by bernd »

but this if is useless now, because any ConstraintElectrostaticPotential has the attribute Potential. Before the Potential had to be not 0.0
Post Reply