Multiple Solver Instances in GUI & sif Synchronization

The graphical user interface of Elmer
Post Reply
Z.Losonc
Posts: 40
Joined: 21 Dec 2017, 16:05
Antispam: Yes

Multiple Solver Instances in GUI & sif Synchronization

Post by Z.Losonc »

Hi,

It is a neat idea to allow users to add solver tabs (that don't exist by default) to the GUI using custom tailored xml files (or via File>Definitions… menu items). This feature could potentially eliminate the need for manual sif file modifications, but in its present form it still can't do it.

The problem is that one can add only one unique functional instance of a solver to the GUI, which might not be sufficient for many cases. For example in this sif file:

Code: Select all

$ Density_M = 1.205
$ Angular_Frequency_M = 2155

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
End

Simulation
  Max Output Level = 10
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 1
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = tube.sif
  Post File = tube.ep
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 1
  Name = "Body Property 1"
  Equation = 1
  Material = 1
  Initial condition = 1
End

Solver 1
  Equation = Helmholtz Equation
  Procedure = "HelmholtzSolve" "HelmholtzSolver"
  Variable = -dofs 2 Pressure Wave
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-8
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Solver 2
  Equation = "flux compute 1"
  Procedure = "FluxSolver" "FluxSolver"
  Calculate Flux = Logical True
  Target Variable = String "Pressure Wave 2"
  Flux Coefficient = String "Cv"
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Solver 3
  Equation = "flux compute 2"
  Procedure = "FluxSolver" "FluxSolver"
  Calculate Flux = Logical True
  Target Variable = String "Pressure Wave 1"
  Flux Coefficient = String "Cv"
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Solver 4
  Equation = Result Output
  Procedure = "ResultOutputSolve" "ResultOutputSolver"
  Save Geometry Ids = False
  Output File Name = tube
  Output Format = Vtu
  Scalar Field 2 = Pressure wave 2
  Scalar Field 1 = Pressure wave 1
  Vector Field 1 = Pressure wave 2 flux
  Vector Field 2 = Pressure wave 1 flux
End

Equation 1
  Name = "Helmholtz"
  Angular Frequency =  $ Angular_Frequency_M
  Active Solvers(4) = 1 2 3 4
End

Material 1
  Name = "Air (room temperature)"
  Viscosity = 1.983e-5
  Heat expansion Coefficient = 3.43e-3
  Heat Conductivity = 0.0257
  Relative Permittivity = 1.00059
  Sound speed = 343.0
  Heat Capacity = 1005.0
  Density = $ Density_M
  Cv = Real $ 1/(Density_M * Angular_Frequency_M)
End

Initial Condition 1
  Name = "InitialCondition 1"
  Pressure Wave 1 = 0
  Pressure Wave 2 = 0
End

Boundary Condition 1
  Target Boundaries(1) = 6
  Name = "In"
  Pressure Wave 2 = 0
  Pressure Wave 1 = 100
End

Boundary Condition 2
  Target Boundaries(4) = 2 3 4 5
  Name = "Walls"
  Wave Flux 1 = 0
  Wave Flux 2 = 0
End

Boundary Condition 3
  Target Boundaries(1) = 1
  Name = "Out"
  Wave impedance 1 = 343
  Wave impedance 2 = 0
End
(The associated mesh and project file can be found in this thread: viewtopic.php?f=3&t=4916&start=0)

we have to add two unique FluxSolver sections to the sif file, which can't be done using the GUI, not even with the help of an xml file (at least I couldn't do it via File>Definitions… menu items).

If the developers want this feature to really work, then the GUI code needs to be modified to allow multiple instances of the same solver (with different IDs and content) in the GUI (and in the sif file).

Another suggestion is to modify the GUI in such a way as to establish an automatic bidirectional live synchronization between the GUI model and the sif file. What is in the sif file, should be also in the GUI model, and vice versa.

When the user opens a sub-menu item in the Model menu to modify it, the code should read the relevant data from the sif file and use/show that in the GUI. When the user closes a Model sub-menu popup window, the data it contains (which might have been modified by the user) should be automatically written to the sif file. This way the model data is stored at only one place, in the sif file, and the GUI data will be an identical copy of the sif file. This will also allow users to manually modify the sif file, and the changes will be mirrored in the GUI as well, so they can continue to use the GUI for further adjustments.

Zoltan
mzenker
Posts: 1999
Joined: 07 Dec 2009, 11:49
Location: Germany

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by mzenker »

Hi Zoltan,

for a solver xml you should use a text editor. The syntax is easy to understand, just take an existing one as template.
As not everything which is possible in a sif file is implemented in ElmerGUI, the incorporation of manual sif modifications in the GUI will always be difficult.

Note: The extended Salomé plugin I am working on might eliminate the need to modify sif files by hand. But to get there still some work is needed.

Matthias
Z.Losonc
Posts: 40
Joined: 21 Dec 2017, 16:05
Antispam: Yes

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by Z.Losonc »

Hi Matthias,

As far as I understand the purpose of the “Elmer Definitions File Editor”, which produces an xml file (that should be as good as manually written in a text editor) is to enable users to add solver tabs and features to the GUI that are available in ElmerSolver, but not in ElmerGUI by default.

I assume that the purpose of this feature is to eliminate the need for manual sif file editing. If there is still a need for manual file editing in some cases, then the GUI loses its purpose in those cases, because after manual sif modification we can't resume the manipulation of the sif file in GUI without losing the manual modifications. This problem could be fixed only if there would be an instant synchronization between the GUI data and the sif content.

If you are saying that the sif file posted in this thread can be generated exclusively from GUI with the help of your xml file without any GUI code modifications, then please show me how, because I did not find a way to do it. If you do that, then I will stand corrected. Otherwise my suggestions/requests for GUI modifications still stand.

Zoltan
mzenker wrote:Hi Zoltan,

for a solver xml you should use a text editor. The syntax is easy to understand, just take an existing one as template.
As not everything which is possible in a sif file is implemented in ElmerGUI, the incorporation of manual sif modifications in the GUI will always be difficult.

Note: The extended Salomé plugin I am working on might eliminate the need to modify sif files by hand. But to get there still some work is needed.

Matthias
Last edited by Z.Losonc on 21 Feb 2018, 20:42, edited 1 time in total.
mzenker
Posts: 1999
Joined: 07 Dec 2009, 11:49
Location: Germany

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by mzenker »

Hi Zoltan,

OK, challenge taken... ;)
This is what I produced quickly with ElmerGUI:

Code: Select all

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
$ Density_M = 1.205
$ Angular_Frequency_M = 2155
End

Simulation
  Max Output Level = 5
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 1
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
  Post File = case.vtu
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 9
  Name = "Body 1"
  Material = 1
  Initial condition = 1
End

Solver 4
  Equation = Flux and Gradient
  Target Variable = String "Pressure Wave 2"
  Flux Coefficient = String "Cv"
  Procedure = "FluxSolver" "FluxSolver"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Solver 1
  Equation = Result Output
  Output Format = Vtu
  Procedure = "ResultOutputSolve" "ResultOutputSolver"
  Output File Name = case
  Exec Solver = Always
End

Solver 2
  Equation = Helmholtz Equation
  Procedure = "HelmholtzSolve" "HelmholtzSolver"
  Variable = -dofs 2 Pressure Wave
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Solver 3
  Equation = Flux and Gradient 2
  Procedure = "FluxSolver" "FluxSolver"
  Flux Coefficient = String "Cv"
  Calculate Flux = True
  Target Variable = String "Pressure Wave 1"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Equation 1
  Name = "Equation 1"
  Angular Frequency = $ Angular_Frequency_M
  Active Solvers(4) = 4 1 2 3
End

Material 1
  Name = "Air (room temperature)"
  Viscosity = 1.983e-5
  Heat expansion Coefficient = 3.43e-3
Cv = Real $ 1/(Density_M * Angular_Frequency_M)
  Heat Conductivity = 0.0257
  Relative Permittivity = 1.00059
  Sound speed = 343.0
  Heat Capacity = 1005.0
  Density = $ Density_M
End

Initial Condition 1
  Name = "InitialCondition 1"
  Pressure Wave 1 = 0
  Pressure Wave 2 = 0
End

Boundary Condition 1
  Target Boundaries(1) = 7 
  Name = "In"
  Pressure Wave 2 = 0
  Pressure Wave 1 = 100
End

Boundary Condition 2
  Target Boundaries(1) = 8 
  Name = "Out"
  Wave Flux 1 = 0
  Wave Flux 2 = 0
  Wave impedance 1 = 1
  Wave impedance 2 = 2
End
Note that I did really just click something together that resembled vaguely to your settings. I did not run it. What I did to get the 2nd instance of FluxSolver is just copy the fluxsolver.xml and change its file name and tab name (line 5 of fluxsolver.xml) by appending a "2".
So I am pretty sure now that the sif file you posted above can be closely reproduced with ElmerGUI. :)
The only exception is perhaps for the MATC definitions, which I inserted in the free text field in the Header section. I hope they will be globally valid anyway.
Up to you to try it out... ;)

HTH,

Matthias

EDIT: I have just reread some of the previous posts - the MATC definitions outside sections might in fact be necessary and cannot be done with ElmerGUI AFAIK. I don't have the time to investigate further right now, maybe later...
EDIT 2: I have checked that MATC variables defined inside sections (at least in the Header section) are seen globally, see next post.
mzenker
Posts: 1999
Joined: 07 Dec 2009, 11:49
Location: Germany

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by mzenker »

Hi,

a quick check shows that the MATC expressions do not need to be placed outside a section. In the following simple sif (generated by ElmerGUI), a MATC variable Testx is defined in the Header section (free text field) and used in the Boundary Condition 1:

Code: Select all

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
$ Testx = 100
End

Simulation
  Max Output Level = 5
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 20
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
  Post File = case.vtu
Coordinate Scaling = 0.001
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 7
  Name = "Body 1"
  Equation = 1
  Material = 1
  Initial condition = 1
End

Solver 1
  Equation = Heat Equation
  Procedure = "HeatSolve" "HeatSolver"
  Variable = Temperature
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Equation 1
  Name = "Equation 1"
  Active Solvers(1) = 1
End

Material 1
  Name = "Iron (generic)"
  Heat expansion Coefficient = 11.8e-6
  Heat Conductivity = 80.2
  Sound speed = 5000.0
  Heat Capacity = 449.0
  Mesh Poisson ratio = 0.29
  Density = 7870.0
  Poisson ratio = 0.29
  Youngs modulus = 193.053e9
End

Initial Condition 1
  Name = "InitialCondition 1"
  Temperature = 300
End

Boundary Condition 1
  Target Boundaries(1) = 3 
  Name = "BoundaryCondition 1"
  Temperature = $ Testx * 2
End

Boundary Condition 2
  Target Boundaries(1) = 6 
  Name = "BoundaryCondition 2"
  Temperature = 600
End
I have verified that it works as expected, and that if I change Testx and rerun, the temperature at the boundary changes as expected.
Conclusion: Zoltan's sif file can be generated by ElmerGUI as shown in my previous post. :)

HTH,
Matthias
Z.Losonc
Posts: 40
Joined: 21 Dec 2017, 16:05
Antispam: Yes

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by Z.Losonc »

Hi Matthias,

Thanks for responding and “accepting the challenge”; at least you show some attention and good will (unlike the developers...). Unfortunately, this good will is not sufficient to meet the challenge, and your triumphant announcement:
“Conclusion: Zoltan's sif file can be generated by ElmerGUI as shown in my previous post. “
is not true. You are cheating! :)

This sif file that you claim you have generated purely in GUI:

Code: Select all

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
$ Density_M = 1.205
$ Angular_Frequency_M = 2155
End

Simulation
  Max Output Level = 5
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 1
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
  Post File = case.vtu
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 9
  Name = "Body 1"
  Material = 1
  Initial condition = 1
End

Solver 4
  Equation = Flux and Gradient
  Target Variable = String "Pressure Wave 2"
  Flux Coefficient = String "Cv"
  Procedure = "FluxSolver" "FluxSolver"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Solver 1
  Equation = Result Output
  Output Format = Vtu
  Procedure = "ResultOutputSolve" "ResultOutputSolver"
  Output File Name = case
  Exec Solver = Always
End

Solver 2
  Equation = Helmholtz Equation
  Procedure = "HelmholtzSolve" "HelmholtzSolver"
  Variable = -dofs 2 Pressure Wave
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Solver 3
  Equation = Flux and Gradient 2
  Procedure = "FluxSolver" "FluxSolver"
  Flux Coefficient = String "Cv"
  Calculate Flux = True
  Target Variable = String "Pressure Wave 1"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Equation 1
  Name = "Equation 1"
  Angular Frequency = $ Angular_Frequency_M
  Active Solvers(4) = 4 1 2 3
End

Material 1
  Name = "Air (room temperature)"
  Viscosity = 1.983e-5
  Heat expansion Coefficient = 3.43e-3
Cv = Real $ 1/(Density_M * Angular_Frequency_M)
  Heat Conductivity = 0.0257
  Relative Permittivity = 1.00059
  Sound speed = 343.0
  Heat Capacity = 1005.0
  Density = $ Density_M
End

Initial Condition 1
  Name = "InitialCondition 1"
  Pressure Wave 1 = 0
  Pressure Wave 2 = 0
End

Boundary Condition 1
  Target Boundaries(1) = 7
  Name = "In"
  Pressure Wave 2 = 0
  Pressure Wave 1 = 100
End

Boundary Condition 2
  Target Boundaries(1) = 8
  Name = "Out"
  Wave Flux 1 = 0
  Wave Flux 2 = 0
  Wave impedance 1 = 1
  Wave impedance 2 = 2
End
does not work. The solver breaks down with error messages.

In order meet the challenge, you have to produce exactly the same sif file from GUI that I have originally posted. If you do that, then there is no need to run it, because it has been proven earlier in another thread that it works, and produces accurate results. To ease the task, you can include the lines:

Code: Select all

$ Density_M = 1.205
$ Angular_Frequency_M = 2155
within the Header, that isn't the problem.

Alternatively, if whatever itch forces you to produce a different sif file, which is not the same as the original, then you have to test it whether at least it runs or not, and whether the results are equally correct as those produced by the original sif file, or not.
“Just click something together that resembled vaguely to your settings”
and expect people to accept it as a triumphant solution is not fair. In fact it doesn't even resemble the original sif file by my measure.

Also, merely posting a sif file without explaining how you made it in GUI is of no use, it doesn't help anybody. The very purpose of this discussion is to find out “HOW to do it”. This part is also missing from your response.

Let me rephrase the original “challenge” to be more specific:

Please, generate the original sif file first posted in this thread exclusively from GUI, without any GUI code modifications, AND describe in detail exactly how you did that, so that anybody should be able to replicate your result, step by step in the style of:

Code: Select all

Add a FluxSolver tab to GUI like this:
File>Definitions...>Append>/usr/share/ElmerGUI/edf-extra/fluxsolver.xml>[Open] etc.
I am not expecting anything from you that I wouldn't do myself, if I could. In fact if you don't discover the problems yourself, then I will post the process of my attempt later on, to show where it fails, and what needs to be fixed. This is also ElmerGUI version dependent, and the main problems encountered in an earlier version seem to be resolved in the more recent version; but now new bugs are preventing success.

Let's consider some common sense issues as well:

1) The purpose of the GUI is to make the work with the solver more user friendly, freeing them from the burden of learning the structure, syntax, mandatory lines etc. of the sif input file. It is easier to choose from a list of possible options, than finding, and adding everything needed in a syntax sensitive manner to a sif file. Many people who refuse to deal with input files, would be still very happy to work with a GUI.

2) It is unreasonable if you or the GUI developers expect the GUI user to learn (or already know) xml, and program his own GUI modifications, in order to enable a solver handling like FluxSolver. If the user can do such a thing, then he will surely be able to learn the much simpler task of writing the sif directly, and then he will not need the GUI any more, nor its modification via xml. If the user needs the GUI, because the sif file writing is too much bother for him, then the xml writing will be surely out of question.

3) The idea of the GUI modifications via xml is great, but the xml code should be written by the developers (or volunteer users who claim to be able to do it) and also verify that they work as they should. With other words, expecting from average users to do this is completely unrealistic.

4) If there already exist such xml files like those in /usr/share/ElmerGUI/edf-extra/ folder for already existing solvers, then I don't see any acceptable reason why they should not be a permanent part of the GUI. If those are added by default, then the problem of users struggling with this issue never emerges.

5) The very useful function of File>Definitions… and the manual writing of xml files would then be restricted to users who write their own solvers, which are not available yet in the ElmerSolver package. But if someone can write a solver, then it is a reasonable expectation that he will be also able and willing to write the xml file as well. So there is no conflict here. But the expectation that all GUI users should belong to this group of people (or else must be happy with the default functionality of the GUI; or even worse: pay for extra services) is unreasonable.

Therefore, if I would really want to represent the best interests of the average GUI users, then the “challenge” supposed to also include the restriction: “...without any manual xml file modifications...”; but I guess that would be too much for you to meet now. So I will be satisfied, if you do it even by manually modifying the xml files, as long as you also show what, and how you modified. :)

Zoltan
mzenker wrote:Hi Zoltan,

OK, challenge taken... ;)
This is what I produced quickly with ElmerGUI:

Code: Select all

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
$ Density_M = 1.205
$ Angular_Frequency_M = 2155
End

Simulation
  Max Output Level = 5
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 1
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
  Post File = case.vtu
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 9
  Name = "Body 1"
  Material = 1
  Initial condition = 1
End

Solver 4
  Equation = Flux and Gradient
  Target Variable = String "Pressure Wave 2"
  Flux Coefficient = String "Cv"
  Procedure = "FluxSolver" "FluxSolver"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Solver 1
  Equation = Result Output
  Output Format = Vtu
  Procedure = "ResultOutputSolve" "ResultOutputSolver"
  Output File Name = case
  Exec Solver = Always
End

Solver 2
  Equation = Helmholtz Equation
  Procedure = "HelmholtzSolve" "HelmholtzSolver"
  Variable = -dofs 2 Pressure Wave
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Solver 3
  Equation = Flux and Gradient 2
  Procedure = "FluxSolver" "FluxSolver"
  Flux Coefficient = String "Cv"
  Calculate Flux = True
  Target Variable = String "Pressure Wave 1"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Equation 1
  Name = "Equation 1"
  Angular Frequency = $ Angular_Frequency_M
  Active Solvers(4) = 4 1 2 3
End

Material 1
  Name = "Air (room temperature)"
  Viscosity = 1.983e-5
  Heat expansion Coefficient = 3.43e-3
Cv = Real $ 1/(Density_M * Angular_Frequency_M)
  Heat Conductivity = 0.0257
  Relative Permittivity = 1.00059
  Sound speed = 343.0
  Heat Capacity = 1005.0
  Density = $ Density_M
End

Initial Condition 1
  Name = "InitialCondition 1"
  Pressure Wave 1 = 0
  Pressure Wave 2 = 0
End

Boundary Condition 1
  Target Boundaries(1) = 7 
  Name = "In"
  Pressure Wave 2 = 0
  Pressure Wave 1 = 100
End

Boundary Condition 2
  Target Boundaries(1) = 8 
  Name = "Out"
  Wave Flux 1 = 0
  Wave Flux 2 = 0
  Wave impedance 1 = 1
  Wave impedance 2 = 2
End
Note that I did really just click something together that resembled vaguely to your settings. I did not run it. What I did to get the 2nd instance of FluxSolver is just copy the fluxsolver.xml and change its file name and tab name (line 5 of fluxsolver.xml) by appending a "2".
So I am pretty sure now that the sif file you posted above can be closely reproduced with ElmerGUI. :)
The only exception is perhaps for the MATC definitions, which I inserted in the free text field in the Header section. I hope they will be globally valid anyway.
Up to you to try it out... ;)

HTH,

Matthias

EDIT: I have just reread some of the previous posts - the MATC definitions outside sections might in fact be necessary and cannot be done with ElmerGUI AFAIK. I don't have the time to investigate further right now, maybe later...
EDIT 2: I have checked that MATC variables defined inside sections (at least in the Header section) are seen globally, see next post.
mzenker wrote:Hi,

a quick check shows that the MATC expressions do not need to be placed outside a section. In the following simple sif (generated by ElmerGUI), a MATC variable Testx is defined in the Header section (free text field) and used in the Boundary Condition 1:

Code: Select all

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
$ Testx = 100
End

Simulation
  Max Output Level = 5
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 20
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
  Post File = case.vtu
Coordinate Scaling = 0.001
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 7
  Name = "Body 1"
  Equation = 1
  Material = 1
  Initial condition = 1
End

Solver 1
  Equation = Heat Equation
  Procedure = "HeatSolve" "HeatSolver"
  Variable = Temperature
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Iterative
  Linear System Iterative Method = BiCGStab
  Linear System Max Iterations = 500
  Linear System Convergence Tolerance = 1.0e-10
  BiCGstabl polynomial degree = 2
  Linear System Preconditioning = Diagonal
  Linear System ILUT Tolerance = 1.0e-3
  Linear System Abort Not Converged = False
  Linear System Residual Output = 1
  Linear System Precondition Recompute = 1
End

Equation 1
  Name = "Equation 1"
  Active Solvers(1) = 1
End

Material 1
  Name = "Iron (generic)"
  Heat expansion Coefficient = 11.8e-6
  Heat Conductivity = 80.2
  Sound speed = 5000.0
  Heat Capacity = 449.0
  Mesh Poisson ratio = 0.29
  Density = 7870.0
  Poisson ratio = 0.29
  Youngs modulus = 193.053e9
End

Initial Condition 1
  Name = "InitialCondition 1"
  Temperature = 300
End

Boundary Condition 1
  Target Boundaries(1) = 3 
  Name = "BoundaryCondition 1"
  Temperature = $ Testx * 2
End

Boundary Condition 2
  Target Boundaries(1) = 6 
  Name = "BoundaryCondition 2"
  Temperature = 600
End
I have verified that it works as expected, and that if I change Testx and rerun, the temperature at the boundary changes as expected.
Conclusion: Zoltan's sif file can be generated by ElmerGUI as shown in my previous post. :)

HTH,
Matthias
Last edited by Z.Losonc on 21 Feb 2018, 20:41, edited 1 time in total.
mzenker
Posts: 1999
Joined: 07 Dec 2009, 11:49
Location: Germany

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by mzenker »

Hi Zoltan,

I have quickly read your post. I don't have the time right now to respond in detail. And I must say that I find your exigent attitude a bit problematic. This is not commercial software, so you are not entitled for commercial-style support. If you want that, feel free to buy a product like COMSOL or ANSYS.

I have shown that a sif file can be produced without GUI code modification that satisfies what I think are the challenging points of your sif file posted at the beginning of this thread:

1. Use Parameters defined by MATC statements
2. Use two instances of fluxsolver

I have told you how I solved those points.
Unless I overlooked something, the other features of your sif file can be easily entered in the GUI. So I stand by my conclusion.
If you don't know how to make a sif file with the GUI, read the GUI manual and work through a tutorial.

Just quickly two more points:

1. The point with the xml files is that you make them once, then use them many times. The syntax is really easy to understand. IMO someone who uses FEM software is not a computer novice, so s/he should be able to do such a thing. I have never used the definitions feature in ElmerGUI, I find it easier to edit the file directly. But for many (most) solvers there are xml files readily available, so the average user would not have to edit them or make new ones.
2. Of course one could put all available solver xmls in the edf directory. I think this has not been done because the GUI would be a bit overloaded with all those solver tabs. But you are free to do it yourself right after installation. Just beware that the solver tab configuration can influence saving and reloading of GUI projects. This is admittedly one of the weaknesses of the GUI, which should be changed in IMO.

Matthias
Z.Losonc
Posts: 40
Joined: 21 Dec 2017, 16:05
Antispam: Yes

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by Z.Losonc »

Hi,

I will not respond to the last post of Matthias in detail, because then a flame war would break out on this thread, and that would definitely not serve anybody’s interests.

I have reported in this thread that the feature File>Definitions… Append one of the xml files from the directory /usr/share/ElmerGUI/edf-extra/ does not work properly for the described sif file, because the GUI can't create a working sif, equivalent to the originally posted one. It doesn't matter whether the xml is added via the GUI File>Definitions… or manually copy-pasting and modifying the name, as Matthias claimed to have done. The result is the same, a sif that doesn't work.

It is not sufficient to just add two instances of FluxSolver to the GUI tabs, it is also necessary that the sif generated by such a GUI should run without errors, and produce accurate results. This is not possible in the ElmerGUI version that I am using now (which is a fairly recent 2018 version), because after adding the Helmholtz equation, and attempting to add another one, like the imported FluxSolver, the “Apply to bodies: Body 1” option box is greyed out. With other words, it is not possible to assign another equation to the same “Body 1”. Therefore the generated sif will contain equation sections, which are not assigned to any “Body” as it is visible in the sif generated by Matthias, and the solver will break down.

This new bug was not present in an earlier version of ElmerGUI that I still have installed on another partition. But that older version has got other bugs, which have also prevented the generation of the required sif. Now that the versions are mentioned, here is the install file name downloaded from launchpad that I am using now (still have the file):

elmerfem-csc_8.3-0ppa0-201801121609~021ce99~ubuntu14.04.1_amd64.deb

I have also suggested an improvement that could enable the users to use the GUI even after manual sif modifications, without losing their manual changes. This can be achieved by maintaining a bidirectional synchronization between the sif file and the GUI model data.

Please note, that I did not demand these changes to be implemented, I have nicely suggested and requested. My reporting was a positive act of user feedback about how to improve the software. Now, if this is considered and treated here on this forum as an act of aggression, that needs to be debunked with fake solutions, buried, and attacked with comments like:
mzenker wrote:And I must say that I find your exigent attitude a bit problematic. This is not commercial software, so you are not entitled for commercial-style support. If you want that, feel free to buy a product like COMSOL or ANSYS.
then that is a clear sign that this forum is the wrong place to be, and it is time for me to move on.

Please don't misunderstand: I am not saying that Elmer as a whole, or even ElmerGUI is all bad. Like any software, it is just the result of creative work, which can be always improved, as long as there is a will and effort to do so. The ElmerSolver is actually very useful, and I encourage people to use it, if the features they need are present in the software package. We might also use it in some cases. What more, I was also planning to publish a collection of models/tutorials for the acoustic module.

My disappointment is only with the policy and attitude that rules on this forum, and Matthias (and a couple more posters) represents the Elmer public relations standpoint, under the guise of being just an independent user. Since 2009 he has made 1651 posts, and if one reads only 10% of those posts it will become clear what interests he represents.

I have promised to post a detailed description of my attempt to produce the discussed sif purely from GUI with the help of the xml files, but there is no point in doing so now. With this my work is finished on this forum, and I will not post here any more. This will surely please some political interests as well. ;)

Cheers,
Zoltan

mzenker wrote:Hi Zoltan,

I have quickly read your post. I don't have the time right now to respond in detail. And I must say that I find your exigent attitude a bit problematic. This is not commercial software, so you are not entitled for commercial-style support. If you want that, feel free to buy a product like COMSOL or ANSYS.

I have shown that a sif file can be produced without GUI code modification that satisfies what I think are the challenging points of your sif file posted at the beginning of this thread:

1. Use Parameters defined by MATC statements
2. Use two instances of fluxsolver

I have told you how I solved those points.
Unless I overlooked something, the other features of your sif file can be easily entered in the GUI. So I stand by my conclusion.
If you don't know how to make a sif file with the GUI, read the GUI manual and work through a tutorial.

Just quickly two more points:

1. The point with the xml files is that you make them once, then use them many times. The syntax is really easy to understand. IMO someone who uses FEM software is not a computer novice, so s/he should be able to do such a thing. I have never used the definitions feature in ElmerGUI, I find it easier to edit the file directly. But for many (most) solvers there are xml files readily available, so the average user would not have to edit them or make new ones.
2. Of course one could put all available solver xmls in the edf directory. I think this has not been done because the GUI would be a bit overloaded with all those solver tabs. But you are free to do it yourself right after installation. Just beware that the solver tab configuration can influence saving and reloading of GUI projects. This is admittedly one of the weaknesses of the GUI, which should be changed in IMO.

Matthias
mzenker
Posts: 1999
Joined: 07 Dec 2009, 11:49
Location: Germany

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by mzenker »

I think that I have to reply here.
Having read sentences like
Z.Losonc wrote: ...the claimed forum “support” is also reluctant and of little help...
Z.Losonc wrote: The method described on the page http://www.elmerfem.org/elmerwiki/index ... sing_Cmake has been proven not to work, and if you (or someone else) have not fixed the mistakes yet, then it is still misleading people and unnecessarily wasting their time.
Z.Losonc wrote: Unfortunately the developers did not consider this subject to be worth even addressing so far.
Z.Losonc wrote: ...at least you show some attention and good will (unlike the developers...)
Z.Losonc wrote: I am looking for clear, and detailed compiling instructions that work on Linux (now using Linux Mint 17.3). Nobody seems to be interested in enabling us to do this either…
Z.Losonc wrote: Even if the developers have no time to fix some issues in the software and add new features, it would be still nice if you or another developer could at least answer legitimate questions, and acknowledge bug reports. Otherwise potential users may stop communicating, and then the developers will have to do all the debugging and testing work themselves (which is much more expensive than writing the code).
Z.Losonc wrote: ...if this is considered and treated here on this forum as an act of aggression, that needs to be debunked with fake solutions, buried, and attacked...
I cannot help finding that they express an attitude which is (at least) exigent, and not very appropriate in the open source world where one normally wants other people to do oneself a favour. They will not be more motivated to do so if one rants on them...
Z.Losonc wrote: My disappointment is only with the policy and attitude that rules on this forum, and Matthias (and a couple more posters) represents the Elmer public relations standpoint, under the guise of being just an independent user. Since 2009 he has made 1651 posts, and if one reads only 10% of those posts it will become clear what interests he represents.
There is no "Elmer public relations standpoint", and I represent nobody else's interests.
I have made many posts because I want to contribute to the Elmer project by helping to answer user's questions (the simpler ones ;) ). That's all.
I refrain from further comments on the statement above...

However, my reaction was perhaps a bit rude. I did not mean to offend anyone, or chase anyone from this forum. I should have taken the time to read the post I was replying to more carefully - or, since I didn't have enough time at that moment, I should perhaps have read it later, or not at all.

That said, the case of the sif file above still interests me. So, Zoltan, if you are reading this, you might try the following sif file which I have just generated using ElmerGUI, trying to reproduce yours as closely as I could:

Code: Select all

Header
  CHECK KEYWORDS Warn
  Mesh DB "." "."
  Include Path ""
  Results Directory ""
$ Density_M = 1.205
$ Angular_Frequency_M = 2155
End

Simulation
  Max Output Level = 10
  Coordinate System = Cartesian
  Coordinate Mapping(3) = 1 2 3
  Simulation Type = Steady state
  Steady State Max Iterations = 1
  Output Intervals = 1
  Timestepping Method = BDF
  BDF Order = 1
  Solver Input File = case.sif
End

Constants
  Gravity(4) = 0 -1 0 9.82
  Stefan Boltzmann = 5.67e-08
  Permittivity of Vacuum = 8.8542e-12
  Boltzmann Constant = 1.3807e-23
  Unit Charge = 1.602e-19
End

Body 1
  Target Bodies(1) = 1
  Name = "Body 1"
  Equation = 1
  Material = 1
  Initial condition = 1
End

Solver 2
  Equation = Flux and Gradient
  Target Variable = String "Pressure Wave 2"
  Flux Coefficient = String "Cv"
  Calculate Flux = True
  Procedure = "FluxSolver" "FluxSolver"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Solver 4
  Equation = Result Output
  Save Geometry Ids = False
  Output Format = Vtu
  Procedure = "ResultOutputSolve" "ResultOutputSolver"
  Output File Name = tube
  Scalar Field 2 = Pressure wave 2
  Scalar Field 1 = Pressure wave 1
  Vector Field 2 = Pressure wave 1 flux
  Vector Field 1 = Pressure wave 2 flux
  Exec Solver = Always
End

Solver 1
  Equation = Helmholtz Equation
  Procedure = "HelmholtzSolve" "HelmholtzSolver"
  Variable = -dofs 2 Pressure Wave
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Solver 3
  Equation = Flux and Gradient 2
  Procedure = "FluxSolver" "FluxSolver"
  Flux Coefficient = String "Cv"
  Calculate Flux = True
  Target Variable = String "Pressure Wave 1"
  Exec Solver = Always
  Stabilize = True
  Bubbles = False
  Lumped Mass Matrix = False
  Optimize Bandwidth = True
  Steady State Convergence Tolerance = 1.0e-5
  Nonlinear System Convergence Tolerance = 1.0e-7
  Nonlinear System Max Iterations = 20
  Nonlinear System Newton After Iterations = 3
  Nonlinear System Newton After Tolerance = 1.0e-3
  Nonlinear System Relaxation Factor = 1
  Linear System Solver = Direct
  Linear System Direct Method = Banded
End

Equation 1
  Name = "Helmholtz"
  Angular Frequency = $ Angular_Frequency_M
  Active Solvers(4) = 2 4 1 3
End

Material 1
  Name = "Air (room temperature)"
  Viscosity = 1.983e-5
  Heat expansion Coefficient = 3.43e-3
Cv = Real $ 1/(Density_M * Angular_Frequency_M)
  Heat Conductivity = 0.0257
  Relative Permittivity = 1.00059
  Sound speed = 343.0
  Heat Capacity = 1005.0
  Density = $ Density_M
End

Initial Condition 1
  Name = "InitialCondition 1"
  Pressure Wave 1 = 0
  Pressure Wave 2 = 0
End

Boundary Condition 1
  Target Boundaries(1) = 6 
  Name = "In"
  Pressure Wave 2 = 0
  Pressure Wave 1 = 100
End

Boundary Condition 2
  Target Boundaries(4) = 2 3 4 5 
  Name = "Walls"
  Wave Flux 1 = 0
  Wave Flux 2 = 0
End

Boundary Condition 3
  Target Boundaries(1) = 1 
  Name = "Out"
  Wave impedance 1 = 343
  Wave impedance 2 = 0
End
Of course I might have overlooked something. But I ran it using your mesh files, and the results (see attachment) seem to resemble to what you have calculated. Up to you to see if they are really what you expect.
I use Elmer 8.3 from launchpad under Linux Mint 17.3.
You will find the ElmerGUI project file and the xml for the 2nd Fluxsolver in the attachment.
I have just moved the fluxsolver xml into the edf directory, made a copy, and changed its name and the 5th line (adding "2").
The rest is entering the settings from your sif file into ElmerGUI, using some of the free text fields, e.g. for the MATC parameters. The order of the solvers has to be adjusted with the priority (larger numbers come first). Apart from that, it was really easy, no dirty tricks needed. If you load the project file with ElmerGUI, you should be able to see what exactly I have done. (Yes, it would be better if the sif file could be used instead, I would also prefer that.)
I don't think you will need a step-by-step instruction to reproduce (if your ElmerGUI is not buggy, of course).

So, I hope this will help you, or somebody else...

Matthias
Attachments
fluxsolver2.xml
(1.82 KiB) Downloaded 365 times
tube0001.vtu.zip
(348.69 KiB) Downloaded 358 times
egproject.xml
(218.24 KiB) Downloaded 344 times
sushma
Posts: 1
Joined: 08 Feb 2019, 08:25
Antispam: Yes

Re: Multiple Solver Instances in GUI & sif Synchronization

Post by sushma »

Excellent post. I was helpful for me. Thank for this informative topic.
Post Reply