Giter Site home page Giter Site logo

su2code / su2 Goto Github PK

View Code? Open in Web Editor NEW
1.2K 163.0 817.0 915.41 MB

SU2: An Open-Source Suite for Multiphysics Simulation and Design

Home Page: https://su2code.github.io

License: Other

C++ 90.19% Python 8.52% Shell 0.08% C 0.78% Meson 0.32% Dockerfile 0.01% SWIG 0.05% GLSL 0.04%
cfd c-plus-plus simulation optimization python opensource physics flow fluid fluid-dynamics

su2's Introduction

SU2 (ver. 8.0.1 "Harrier"): The Open-Source CFD Code

Computational analysis tools have revolutionized the way we design engineering systems, but most established codes are proprietary, unavailable, or prohibitively expensive for many users. The SU2 team is changing this, making multiphysics analysis and design optimization freely available as open-source software and involving everyone in its creation and development.

For an overview of the technical details in SU2, please see the following AIAA Journal article:

"SU2: An open-source suite for multiphysics simulation and design," AIAA Journal, 54(3):828-846, 2016. http://arc.aiaa.org/doi/10.2514/1.J053813

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Continuous Integration:
Regression Testing Release

Code Quality:
CodeFactor

SU2 Introduction

SU2 is a suite of open-source software tools written in C++ for the numerical solution of partial differential equations (PDE) and performing PDE constrained optimization.

The primary applications are computational fluid dynamics and aerodynamic shape optimization, but has been extended to treat more general equations such as electrodynamics and chemically reacting flows.

You will find more information and the latest news in:

SU2 Installation

Precompiled binaries for Linux, MacOS, Windows

You can find precompiled binaries of the latest version on our download page or under releases.

Build SU2

The build system of SU2 is based on a combination of meson (as the front-end) and ninja (as the back-end). Meson is an open source build system meant to be both extremely fast, and, even more importantly, as user friendly as possible. Ninja is a small low-level build system with a focus on speed.

Short summary of the minimal requirements:

  • C/C++ compiler
  • Python 3

Note: all other necessary build tools and dependencies are shipped with the source code or are downloaded automatically.

If you have these tools installed, you can create a configuration using the meson.py found in the root source code folder:

./meson.py build

Use ninja to compile and install the code

./ninja -C build install

For more information on how to install and build SU2 on Linux, MacOS or Windows, have a look at the documentation.

SU2 Path setup

When installation is complete, please be sure to add the $SU2_HOME and $SU2_RUN environment variables, and update your $PATH with $SU2_RUN.

For example, add these lines to your .bashrc file:

export SU2_RUN="your_prefix/bin"
export SU2_HOME="/path/to/SU2vX.X.X/"
export PATH=$PATH:$SU2_RUN
export PYTHONPATH=$SU2_RUN:$PYTHONPATH

$SU2_RUN should point to the folder where all binaries and python scripts were installed. This is the prefix you set with the --prefix option to meson. Note that the bin/ directory is automatically added to your prefix path.

$SU2_HOME should point to the root directory of the source code distribution, i.e., /path/to/SU2vX.X.X/.

Thanks for building, and happy optimizing!

  • The SU2 Development Team

SU2 Developers

We follow the popular "GitFlow" branching model for scalable development. In the SU2 repository, the master branch represents the latest stable major or minor release (7.0, 6.2.0, etc.), it should only be modified during version releases. Work that is staged for release is put into the develop branch via Pull Requests on GitHub from various "feature" branches where folks do their day-to-day work on the code. At release time, the work that has been merged into the develop branch is pushed to the master branch and tagged as a release.

SU2 is being developed by individuals and organized teams all around the world.

A list of current contributors can be found in the AUTHORS.md file.

Documentation

Code documentation can be generated by calling doxygen from the root of the project, then open Docs/html/index.html in a browser to consult the documentation.

su2's People

Contributors

aerialhedgehog avatar arubino avatar bigfooted avatar btracey avatar catarinagarbacz avatar clarkpede avatar cvencro avatar economon avatar eduardomolina avatar evertbunschoten avatar fmpmorgado avatar fpalacios avatar hlkline avatar jayantmukho avatar jblueh avatar jtneedels avatar laserpe avatar martin-g avatar maxaehle avatar oleburghardt avatar pcarruscag avatar pengyan777 avatar petebachant avatar rsanfer avatar scsteffen avatar talbring avatar tobadavid avatar tobikattmann avatar vdweide avatar wallymaier avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

su2's Issues

Bad Termination - Running in parallel with CGNS mesh format < test case/euler/wedge >

Hi,

I have been running a simulation with CGNS mesh format from the provided test cases using the last version, SU2 - 3.2.0. The test case was Euler flow simulation over a wedge using the HLLC scheme. The point is that everything going well with the native mesh format, su2, in both parallel and serial, but with the cgns mesh format only in serial the simulation starts. In parallel, the bad termination error comes up exactly after Solution Postprocessing. I checked out with 2.0.10 and had no problem. The details are provided in the following.

===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   EXIT CODE: 1
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
Traceback (most recent call last):
  File "parallel_computation.py", line 117, in <module>
    main()
  File "parallel_computation.py", line 62, in main
    options.divide_grid  )
  File "parallel_computation.py", line 103, in parallel_computation
    info = SU2.run.merge(config)
  File "/~/SU2/code/320/release/SU2_PY/SU2/run/merge.py", line 70, in merge
    merge_solution(konfig)
  File "/~/SU2/code/320/release/SU2_PY/SU2/run/merge.py", line 96, in merge_solution
    SU2_SOL( config )
  File "~/SU2/code/320/release/SU2_PY/SU2/run/interface.py", line 240, in SOL
    run_command( the_Command )
  File "/~/SU2/code/320/release/SU2_PY/SU2/run/interface.py", line 277, in run_command
    raise Exception , message
Exception: Path = /~/SU2/code/320/release/SU2_PY/,
Command = mpirun -n 4 /usr/local/bin/SU2_SOL config_SOL.cfg
SU2 process returned error '1'

Checked out the traceback error in the merge and interface python files, but couldn't figure it out. Is there any problem with the SU2_SOL.cpp?
I appreciate your help for finding the source.

Bests,
PDP

Allow to set both laminar and turbulent bc on wall

Boundary Markers on wall MARKER_NS computes laminar or turbulent flow on the basis of the marker KIND_TURB_MODEL.
Could it be possible to split the key MARKER_NS in LAM and TURB? In this way it could be possible to compute a fixed transition point simulation.

Error checking for SU2 restart files

Right now, there is no error checking whatsoever for the solution restart file. You can give it a tecplot file (for instance) and it will read in without any warning. When we fix that, we should also be adding to the header file (this was run for X solver, etc.) to check that the variables mean the same thing.

No error checking in read geometry

The NACA 0012 Mesh (mesh_NACA0012_turb_897x257.su2) has 3 floating point numbers and then one integer number, but is listed as a 2-dimensional mesh. CPhysicalGeometry::Read_SU2_Format is fine with the mesh file. Worse, it seems to use the z coordinate as the local index under certain conditions (see line 3430). In serial, the node number is ignored, so we are okay, but this is clearly undesirable behavior.

NACA 0012 Mesh has 3 coordinates

The NACA 0012 Mesh (mesh_NACA0012_turb_897x257.su2) does not match the input file format. It is listed as a 2-dimensional mesh, but there are three floating point numbers and then a node number.

Allow empty EnumListOptions

Right now if you include an EnumListOption with no values, for example,

% Type of mesh motion
% Type: EnumListOption Default: GridMovement_Map
GRID_MOVEMENT_KIND= ( )

SU2 gives an error of

Error inT okenizeString(): option GRID_MOVEMENT_KIND in configuration file with no value assigned.

I think this is not good behavior. It means that you cannot easily switch from a config file that uses grid movement to one that does not, and it means your can't write a valid config file that has all of the config options in it.

NACA 0012 Test Case does not converge with provided config file

The NACA 0012 test case (TestCases/rans/naca0012) does not converge with the provided config file if RESTART_SOL=NO, and the number of iterations is increased beyond 25. The test case should be updated to have a config file which converges "out of the box"

Provide NONE string for Marker Options

The default values for the marker options do not parse. It would be nice to add a "NONE" flag that can be parsed as not having any of that boundary type.

in config:
% Dirichlet boundary marker(s)
% Type: MarkerOption Default: Marker_Dirichlet
MARKER_DIRICHLET= Marker_Dirichlet

error is:
Error in CMarkerDirichletRef::SetValue(): incorrect number of MARKER_DIRICHLET_ELEC parameters in the configuration file.

In iteration_structure.cpp (and others?), change order of loops and if statements

In iteration_structure, there are currently several places that say things along the lines of

for (iZone = 0; iZone < nZone; iZone++) {
if (config_container[ZONE_0]->GetWind_Gust())
SetWind_GustField(config_container[iZone],geometry_container[iZone],solver_container[iZone]);
}
}

The iteration loop is on the outside with the if statement inside rather than the opposite. This is less legible (you have to read the loop rather than seeing you aren't using a wind gust) and slower (you have to evaluate the if statement every time). These occurrences should be changed

SU2 can keep running with ridiculus residuals

Sometimes, the code effectively diverges, but does not actually nan. In this case, the code continues to run. There should be some sort of check that halts execution when this occurs.

For example, here the code has a residual increase of 25 orders of magnitude and then continues for a long time afterward.

514 0.858170 -3.810382 -0.818090 0.534918 0.011557
515 0.858110 -3.806673 1.276861 0.535673 0.011433
516 0.858248 -3.523170 2.017555 0.533807 0.010890
517 0.858833 -3.146589 2.453353 0.529337 0.009891
518 0.859031 -2.980286 3.070260 0.523952 0.009211
519 0.859039 -2.637185 3.740419 0.455339 -0.003290
The solution contains 100 non-physical points.

Maximum residual: -0.0373748, located at point 4582.

Iter Time(s) Res[Rho] Res[nu] CLift(Total) CDrag(Total)
520 0.859013 -1.437953 4.373667 -0.099686 -0.094575

The solution contains 127 non-physical points.
521 0.859003 -1.111074 5.056160 -4.065337 -0.780464
The solution contains 284 non-physical points.
522 0.858853 -0.693782 5.183287 -15.761187 -2.268335
The solution contains 514 non-physical points.
523 0.858725 -0.072830 5.147720 -60.615908 -9.156773
The solution contains 691 non-physical points.
524 0.858711 0.730028 4.462988 -358.683565 -69.148449
The solution contains 1434 non-physical points.
525 0.858921 1.373102 4.241595 -914.744092 -187.067270
The solution contains 2138 non-physical points.
526 0.859282 1.713954 3.814762 -1000.000000 -358.772646
The solution contains 1918 non-physical points.
527 0.859916 2.236290 4.340435 -1000.000000 -1000.000000
The solution contains 3154 non-physical points.
528 0.860132 2.291044 4.470125 -1000.000000 -1000.000000
The solution contains 2146 non-physical points.
529 0.860356 2.371124 3.845344 -1000.000000 -1000.000000
The solution contains 1962 non-physical points.
530 0.860386 2.282541 4.230209 -1000.000000 -1000.000000
The solution contains 2372 non-physical points.
531 0.860488 2.346939 4.654921 -1000.000000 -1000.000000
The solution contains 2496 non-physical points.
532 0.860713 2.307424 4.858399 -1000.000000 -1000.000000
The solution contains 2843 non-physical points.
533 0.860842 2.326434 4.965822 -1000.000000 -1000.000000
The solution contains 1398 non-physical points.
534 0.861230 2.506742 4.619859 -1000.000000 -1000.000000
The solution contains 1103 non-physical points.
535 0.861346 3.076538 5.037658 -1000.000000 -1000.000000
The solution contains 1505 non-physical points.
536 0.861831 3.178817 5.692809 1000.000000 -1000.000000
The solution contains 2716 non-physical points.
537 0.861933 3.475146 6.055387 1000.000000 -1000.000000
The solution contains 1071 non-physical points.
538 0.861955 3.352903 5.809910 1000.000000 1000.000000
The solution contains 869 non-physical points.
539 0.861970 10.502005 5.406599 1000.000000 1000.000000
The solution contains 484 non-physical points.

Maximum residual: 12.2995, located at point 9122.

Iter Time(s) Res[Rho] Res[nu] CLift(Total) CDrag(Total)
540 0.862010 10.482742 5.527612 1000.000000 1000.000000
The solution contains 311 non-physical points.
541 0.862336 10.173994 5.795970 1000.000000 1000.000000
The solution contains 351 non-physical points.
542 0.862604 10.888136 5.892078 1000.000000 1000.000000
The solution contains 740 non-physical points.
543 0.862822 11.004870 5.926460 1000.000000 1000.000000
The solution contains 794 non-physical points.
544 0.863036 10.896925 5.946274 1000.000000 1000.000000
The solution contains 1043 non-physical points.
545 0.863305 10.780974 6.014822 1000.000000 -1000.000000
The solution contains 52 non-physical points.
546 0.863434 11.006074 6.193320 1000.000000 -1000.000000
The solution contains 100 non-physical points.
547 0.863491 16.405862 6.268311 -1000.000000 1000.000000
548 0.863551 21.156949 6.187249 -1000.000000 1000.000000
549 0.863572 20.713874 6.055920 -1000.000000 -1000.000000
550 0.863532 20.780220 6.044304 -1000.000000 -1000.000000
551 0.863474 20.816135 6.048407 -1000.000000 -1000.000000
The solution contains 21 non-physical points.
552 0.863471 20.672119 6.034922 -1000.000000 -1000.000000

many iterations later

The solution contains 1914 non-physical points.
977 0.893147 64.219218 11.800077 -1000.000000 1000.000000
The solution contains 1823 non-physical points.
978 0.893113 64.232616 11.770575 -1000.000000 1000.000000
The solution contains 2178 non-physical points.
979 0.893083 64.159323 11.882706 -1000.000000 -1000.000000
The solution contains 1788 non-physical points.

Maximum residual: 65.7206, located at point 5028.

Iter Time(s) Res[Rho] Res[nu] CLift(Total) CDrag(Total)
980 0.893109 64.114631 11.897500 -1000.000000 -1000.000000
981 0.893082 64.243047 12.598995 -1000.000000 1000.000000
982 0.892990 71.853036 12.042708 -1000.000000 1000.000000
983 0.892886 71.308281 11.863795 -1000.000000 1000.000000
984 0.892820 71.180385 11.838073 -1000.000000 1000.000000
985 0.892757 71.070490 11.785052 -1000.000000 1000.000000

Rename "FullMG"

The name FullMG is confusing compared with the other MG settings.

Restart heading code duplication

There is a lot of repeated code in COutput::SetRestart (output_tecplot.cpp) and AssembleVariableNames (output_tecplot.cpp). These two functions should be combined (maybe to return a string that is all of the headings?)

QuickStart tutorial error

while running SU2_CFD inv_NACA0012.cfg
I get "MG_CFL_REDUCTION: invalid option name"

int the file inv_NACA0012.cfg:
% Reduction factor of the CFL coefficient on the coarse levels
MG_CFL_REDUCTION= 0.9

Disclaimer for axisymmetric orientation

Currently, the source term assumes that the axisymmetric behavior is about the x-axis in a 2D problem (uses the y-coordinate in the implementation). For clarity, we should add a disclaimer in the config file description/comment or print this information during preprocessing.

Parallel Execution Changed?

I just (08/23/2013 @ ~12:30p.m. PDT) pulled over the latest changes via git. After re-compiling, and launching a parallel job (OM6 Turbulent Wing Test Case) with the parallel_computation.py script, SU2 seems to launch 4 serial, duplicate jobs rather than 1 parallel job on 4 cores.

Remove trailing tab in restart file

There is a tab printed after the last number in the restart, but not after the last heading. This breaks csv readers because fields are allowed to be blank, and so it looks like there are an unequal number of rows and headings. This should be fixed so that the last number in the file is followed by a newline rather than a tab.

Separate loading restart file and solution file

Right now, the solution file (where SU2 writes the solution upon a successful conclusion) and the restart load file (where SU2 loads the solution) are the same file. It would be nice to at least have the option to make these two different files. Take, for example, my case or Alejandro's case where we load from a converged solution to run our turbulence models. If I run for 100 iterations as a test, for example, my restart file (the SU2 solution file) is overwritten. So instead, I have to make a copy of the restart file, and upon completion rename the output solution file to something else, and rename my copied solution file (really the restart file) back to the SU2 solution file name.

issue with flow over cylinder

i tried a low reynold's number flow simulation for tutorial mesh and it worked, but it does not work with my mesh generated in gmsh.

SU2 3.0.0 Eagle fails to compile due to missing automake-1.14 and aclocal-1.14

I tried to compile SU2 with:

git clone https://github.com/su2code/SU2
cd SU2
./configure
make -j$(nproc)

Configure ran without any issues, but make failed because it was looking for automake-1.14 and aclocal-1.14. On my system I have version 1.11 installed. So I created two symlinks:

sudo ln -s /usr/bin/automake /usr/local/bin/automake-1.14
sudo ln -s /usr/bin/aclocal /usr/local/bin/aclocal-1.14

Ran make again, et voila, everything worked out fine. No issues.

I would like to suggest to change the source of SU2 to not specifically require version 1.14 of automake and aclocal.

Use SA function call in SA

There is now a SpalartAllmaras function that is used by the ML code to compute teh SA source term. This should be used by SA as well. Before this change can happen we need to look at the public intermediate values computed by SA and see if any of them are needed.

Why does SU2 mesh format have element IDs?

The SU2 mesh format states that the elements must have IDs "The final value is the element index given to each interior element in the mesh.". However, these values are completely ignored by SU2 (see geometry_structure.cpp in the code section starting with '/--- Read the information about inner elements ---/' around line 2981). Given that SU2 doesn't use them, we may as well remove them from the specification. They just make mesh files larger.

Non-constant experssion in array definition

I saw in 8 places of the code that non-constant expression have been used which are illegal in standard C/C++.
Since by default the Gcc enables new extensions you can not see these errors but actually you don't need those extension and at this moment they weaken potability of your code.
To see these errors you can add -pedantic-errors switch to gcc or compile it by Microsoft Visual Studio.
I list them in the following (version 2.0.8). I changed them to pointer and the code can be compiled in microsoft visual studio without any change.
1- geometry_structure.cpp -> Line 11597 ->NewSort[nPoint]
2- config_structure.cpp -> Line 1459 -> periods[N_MOTION_TYPES]
3-solver_structure.cpp -> Line 1354 -> Solution[nVar]
4- -> Line 1566 -> Solution[nVar]
5-solver_direct_tne2.cpp -> Line 4469 -> FluxTensor[nVar][nDim]
6-solver_direct_mean.cpp -> Line 41244132 -> FanFace_MassFlow_local[nMarker ...]
7-solver_direct_mean.cpp -> Line 4146
4150 -> Exhaust_MassFlow_local[nMarker ...]
8-numerics_direct_transition.cpp ->Line 152,153 -> Density_Grid_i[nDim],...

shape_optimization.py not running (SU2 v3.0 x64 win)

Dear,

I have recently installed SU2 v3.0 64bit (pre-compiled from SU2 download) on a Windows 7 x64 single_threded and installed python2.7.6 (winPython_amd64) also tried python3.3.

I have installed SU2 as c:\SU2 (no spaces as in program files installation).
When I tried to run the test case of turb_RAE2822 at command prompt:

Code:
python "c:\su2\shape_optimization.py" -f turb_rae2822.cfg
Follwing error displayed:

Traceback (most recent call last):
File "shape_optimization.py", line 26, in
import_su2
File "init.py", line 13, in
if 'libedit' in readline.doc

Type Error: argument of type 'nonetype' is not iterable

How can it be solved?
What is the appropriate version of python?
One more thing that I have found that SU2 is slower than Fluent, i tried naca0012 test case, how can it be sppedy?


Best Regards
Ali

Some bugs when compiling SU2 with metis and cgns-hdf5

I used SU2-3.0.0 'eagle'
My metis version is 5.1.0. But when I compile Metis 64bit (set IDXTYPEWIDTH to 64) .There are some compile errors occured below:

......
......
../src/geometry_structure.cpp(5371): error: argument of type "int *" is incompatible with parameter of type "idx_t={int64_t={l ong}} *"
METIS_SetDefaultOptions(options);
^
../src/geometry_structure.cpp(5373): error: argument of type "int *" is incompatible with parameter of type "idx_t={int64_t={l ong}} *"
METIS_PartMeshNodal(&ne, &nn, eptr, elmnts, NULL, NULL, &nparts, NULL, NULL, &edgecut, epart, npart);
......
......

Same to metis, when I compile cgns with hdf5. There are also some errors. The library link may be had some mistake.

But the most important error is that -- when I change --with-mpi=mpicxx to --with-mpi=mpiicpc .

Build Configuration Summary:

Source code location: /parastor/users/isc01/zy/temp/SU2-master-back
Install location:     
Version:              3.0.0 "eagle"
Compiler:             mpiicpc
Preprocessor flags:   -O3
Compiler flags:       -O3
Linker flags:         
CGNS support:         no
MPI support:          yes
Metis support:        yes
TecIO support:        no
Mutation++ support:   no
Jsoncpp support:      no

Build SU2_CFD:        yes
Build SU2_DDC:        yes
Build SU2_GPC:        yes
Build SU2_MAC:        yes
Build SU2_MDC:        yes
Build SU2_PBC:        yes
Build SU2_SOL:        yes
Build SU2_GDC:        yes
Build SU2_UMC:        yes

There are some errors below:

Making all in Common/lib
make[1]: Entering directory /parastor/users/isc01/zy/temp/SU2-master-back/Common/lib' mpiicpc -DPACKAGE_NAME=\"SU\^2\" -DPACKAGE_TARNAME=\"SU\^2\" -DPACKAGE_VERSION=\"3.0.0\ \"eagle\"\" -DPACKAGE_STRING=\"SU\^2\ 3.0.0\ \"eagle\"\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://su2.stanford.edu\" -DPACKAGE=\"SU\^2\" -DVERSION=\"3.0.0\ \"eagle\"\" -I. -O3 -DNO_CGNS -I/parastor/users/isc01/zy/metis-64/include -DMETIS_5 -DNO_TECIO -DNO_MUTATIONPP -O3 -MT ../src/libSU2_a-config_structure.o -MD -MP -MF ../src/.deps/libSU2_a-config_structure.Tpo -c -o ../src/libSU2_a-config_structure.otest -f '../src/config_structure.cpp' || echo './'../src/config_structure.cpp mv -f ../src/.deps/libSU2_a-config_structure.Tpo ../src/.deps/libSU2_a-config_structure.Po mpiicpc -DPACKAGE_NAME=\"SU\^2\" -DPACKAGE_TARNAME=\"SU\^2\" -DPACKAGE_VERSION=\"3.0.0\ \"eagle\"\" -DPACKAGE_STRING=\"SU\^2\ 3.0.0\ \"eagle\"\" -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"http://su2.stanford.edu\" -DPACKAGE=\"SU\^2\" -DVERSION=\"3.0.0\ \"eagle\"\" -I. -O3 -DNO_CGNS -I/parastor/users/isc01/zy/metis-64/include -DMETIS_5 -DNO_TECIO -DNO_MUTATIONPP -O3 -MT ../src/libSU2_a-dual_grid_structure.o -MD -MP -MF ../src/.deps/libSU2_a-dual_grid_structure.Tpo -c -o ../src/libSU2_a-dual_grid_structure.otest -f '../src/dual_grid_structure.cpp' || echo './'`../src/dual_grid_structure.cpp
/public/soft/intel/impi/3.2.2.006/include64/mpicxx.h(45): catastrophic error: #error directive: "SEEK_SET is #defined but must not be for the C++ binding of MPI. Include mpi.h before stdio.h"
#error "SEEK_SET is #defined but must not be for the C++ binding of MPI. Include mpi.h before stdio.h"
^

compilation aborted for ../src/dual_grid_structure.cpp (code 4)
make[1]: *** [../src/libSU2_a-dual_grid_structure.o] Error 4
make[1]: Leaving directory `/parastor/users/isc01/zy/temp/SU2-master-back/Common/lib'
make: *** [all-recursive] Error 1

Document the actual behavior of node numbers in SU2 format

Currently, the mesh file documentation (http://adl-public.stanford.edu/docs/display/SUSQUARED/Mesh+files) says
"Each line gives the coordinates for a single node followed by its index number. The node index numbers are the indices used for specifying the connectivity information for elements."

and are specified by
0.00000000000000 0.00000000000000 0
0.50000000000000 0.00000000000000 1
1.00000000000000 0.00000000000000 2
0.00000000000000 0.50000000000000 3
0.50000000000000 0.50000000000000 4
1.00000000000000 0.50000000000000 5
0.00000000000000 1.00000000000000 6
0.50000000000000 1.00000000000000 7
1.00000000000000 1.00000000000000 8

These two facts imply that the number at the end specifies the node number of the location. A consequence of that assumption would be that the nodes could be specified in an arbitrary order, for example as,
1.00000000000000 0.00000000000000 2
0.00000000000000 0.00000000000000 0
0.50000000000000 0.00000000000000 1
1.00000000000000 1.00000000000000 8
1.00000000000000 0.50000000000000 5
0.00000000000000 0.50000000000000 3
0.50000000000000 0.50000000000000 4
0.00000000000000 1.00000000000000 6
0.50000000000000 1.00000000000000 7

This, however, is not true. Looking at CPhysicalGeometry::Read_SU2_Format, the node number is not even used in serial; the nodes are assumed to be given in order, and in the .su2 file the node number can be anything or nothing. The number appears to matter if it is MPI with more than one CPU, but here two different index values are needed (the local and the global). This fact is not mentioned at all in the documentation. The documentation should be changed to match the implementation, or the implementation should be changed to match the documentation.

Restart file delimiter

Currently, the variable name headings are comma delimited and the values are tab delimited. It would be nice if this were consistent.

Running shape_optimization.py with openmpi leads to error at Solver Preprocessing step

Ubuntu 12.04.3
OpenMPI 1.4.3 (repo)

OpenMPI runs well on my system with other applications, but fails 100% of the time with SU2 compiled for mpi. Specific example:

shape_optimization.py -f inv_ONERAM6.cfg -p 4

Error:

------------------------- Solver Preprocessing --------------------------
Area projection in the z-plane = 0.758602.
Traceback (most recent call last):
File "../SU2_PY/shape_optimization.py", line 124, in
main()
File "../SU2_PY/shape_optimization.py", line 69, in main
options.step )
File "../SU2_PY/shape_optimization.py", line 107, in shape_optimization
SU2.opt.SLSQP(project,x0,xb,its)
File "/media/1tb/SU2/SU2_PY/SU2/opt/scipy_tools.py", line 102, in scipy_slsqp
epsilon = 1.0e-06 )
File "/usr/lib/python2.7/dist-packages/scipy/optimize/slsqp.py", line 236, in fmin_slsqp
mieq = len(f_ieqcons(x))
File "/usr/lib/python2.7/dist-packages/scipy/optimize/optimize.py", line 176, in function_wrapper
return function(x, _args)
File "/media/1tb/SU2/SU2_PY/SU2/opt/scipy_tools.py", line 187, in con_cieq
cons = project.con_cieq(x)
File "/media/1tb/SU2/SU2_PY/SU2/opt/project.py", line 223, in con_cieq
return self._eval(konfig, func,dvs)
File "/media/1tb/SU2/SU2_PY/SU2/opt/project.py", line 172, in _eval
vals = design._eval(func,_args)
File "/media/1tb/SU2/SU2_PY/SU2/eval/design.py", line 132, in _eval
vals = eval_func(inputs)
File "/media/1tb/SU2/SU2_PY/SU2/eval/design.py", line 422, in con_cieq
func = su2func(this_con,config,state)
File "/media/1tb/SU2/SU2_PY/SU2/eval/functions.py", line 75, in function
aerodynamics( config, state )
File "/media/1tb/SU2/SU2_PY/SU2/eval/functions.py", line 200, in aerodynamics
info = su2run.direct(config)
File "/media/1tb/SU2/SU2_PY/SU2/run/direct.py", line 75, in direct
SU2_CFD(konfig)
File "/media/1tb/SU2/SU2_PY/SU2/run/interface.py", line 93, in CFD
run_command( the_Command )
File "/media/1tb/SU2/SU2_PY/SU2/run/interface.py", line 279, in run_command
raise Exception , message
Exception: Path = /media/1tb/SU2/onera6/DESIGNS/DSN_001/DIRECT/,
Command = mpirun -np 4 /usr/local/bin/SU2_CFD config_CFD.cfg
SU2 process returned error '134'
CSysVector::CSysVector(unsigned int,unsigned int,double): invalid input: numBlk, numVar = 0CSysVector::CSysVector(unsigned int,unsigned int,double): CSysVector::CSysVector(unsigned int,unsigned int,double): invalid input: numBlk, numVar = 0,5
,5
invalid input: numBlk, numVar = 0terminate called after throwing an instance of 'terminate called after throwing an instance of 'int'
,5
[ system:14029] *
* Process received signal ***
int[ system:14029] Signal: Aborted (6)
[ system:14029] Signal code: (-6)
terminate called after throwing an instance of 'int'
'
[ system:14030] *** Process received signal ***
[ system:14031] *** Process received signal ***
[ system:14030] Signal: Aborted (6)
[ system:14030] Signal code: (-6)
[ system:14031] Signal: Aborted (6)
[ system:14031] Signal code: (-6)
[ system:14029] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x7f7495f2acb0]
[ system:14029] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f7495b91425]
[ system:14029] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f7495b94b8b]
[ system:14030] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x7f13a80aecb0]
[ system:14030] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f13a7d15425]
[ system:14030] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7f13a7d18b8b]
[ system:14030] [ 3] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x11d) [0x7f13a888569d]
[ system:14030] [ 4] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7f13a8883846]
[ system:14030] [ 5] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7f13a8883873]
[ system:14030] [ 6] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7f13a888396e]
[ system:14030] [ 7] /usr/local/bin/SU2_CFD() [0x848d97]
[ system:14030] [ 8] /usr/local/bin/SU2_CFD(_ZN12CEulerSolverC1EP9CGeometryP7CConfigt+0x895) [0x64d055]
[ system:14030] [ 9] /usr/local/bin/SU2_CFD(_Z20Solver_PreprocessingPPP7CSolverPP9CGeometryP7CConfigt+0x1e9) [0x45a299]
[ system:14030] [10] /usr/local/bin/SU2_CFD(main+0x638) [0x6d7db8]
[ system:14030] [11] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f13a7d0076d]
[ system:14030] [12] /usr/local/bin/SU2_CFD() [0x459049]
[ system:14030] *** End of error message ***
[ system:14031] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0xfcb0) [0x7fa4e9ecccb0]
[ system:14031] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7fa4e9b33425]
[ system:14031] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x17b) [0x7fa4e9b36b8b]
[ system:14031] [ 3] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x11d) [0x7fa4ea6a369d]
[ system:14031] [ 4] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7fa4ea6a1846]
[ system:14031] [ 5] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7fa4ea6a1873]
[ system:14031] [ 6] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7fa4ea6a196e]
[ system:14031] [ 7] /usr/local/bin/SU2_CFD() [0x848d97]
[ system:14031] [ 8] /usr/local/bin/SU2_CFD(_ZN12CEulerSolverC1EP9CGeometryP7CConfigt+0x895) [0x64d055]
[ system:14031] [ 9] /usr/local/bin/SU2_CFD(_Z20Solver_PreprocessingPPP7CSolverPP9CGeometryP7CConfigt+0x1e9) [0x45a299]
[ system:14031] [10] /usr/local/bin/SU2_CFD(main+0x638) [0x6d7db8]
[ system:14031] [11] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7fa4e9b1e76d]
[ system:14031] [12] /usr/local/bin/SU2_CFD() [0x459049]
[ system:14031] *** End of error message ***
[ system:14029] [ 3] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(_ZN9__gnu_cxx27__verbose_terminate_handlerEv+0x11d) [0x7f749670169d]
[ system:14029] [ 4] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5846) [0x7f74966ff846]
[ system:14029] [ 5] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb5873) [0x7f74966ff873]
[ system:14029] [ 6] /usr/lib/x86_64-linux-gnu/libstdc++.so.6(+0xb596e) [0x7f74966ff96e]
[ system:14029] [ 7] /usr/local/bin/SU2_CFD() [0x848d97]
[ system:14029] [ 8] /usr/local/bin/SU2_CFD(_ZN12CEulerSolverC1EP9CGeometryP7CConfigt+0x895) [0x64d055]
[ system:14029] [ 9] /usr/local/bin/SU2_CFD(_Z20Solver_PreprocessingPPP7CSolverPP9CGeometryP7CConfigt+0x1e9) [0x45a299]
[ system:14029] [10] /usr/local/bin/SU2_CFD(main+0x638) [0x6d7db8]
[ system:14029] [11] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xed) [0x7f7495b7c76d]
[ system:14029] [12] /usr/local/bin/SU2_CFD() [0x459049]

[ system:14029] *** End of error message ***

mpirun noticed that process rank 2 with PID 14030 on node system exited on signal 6 (Aborted).

NACA 0012 Mesh doesn't specify element node numbers

The SU2 mesh file format states that elements must have node numbers ("The final value is the element index given to each interior element in the mesh"). The NACA 0012 mesh does not have them, and thus doesn't follow the specification. See issue 52 for possible alternative resolution.

build 2.0.8 with metis 5 error

When I try to build with Metis 5 I get the following error :
../src/geometry_structure.cpp:4994:101: error: cannot convert 'int_' to 'idx_t_ {aka long int_}' for argument '1' to 'int METIS_PartMeshNodal(idx_t_, idx_t_, idx_t_, idx_t_, idx_t_, idx_t_, idx_t_, real_t_, idx_t_, idx_t_, idx_t_, idx_t*)'
METIS_PartMeshNodal(&ne, &nn, eptr, elmnts, NULL, NULL, &nparts, NULL, NULL, &edgecut, epart, npart);

the other problem is that you are using metis static (libmetis.a ) instead of libmetis.so (shared)

that' s a problem when you try to package SU^2 for a Linux distribution like Mageia or Fedora or Debian

Just for information , here the patch I made :

Index: SU2-2.0.8/configure
===================================================================
--- SU2-2.0.8/configure
+++ SU2-2.0.8/configure 2013-12-08 13:56:04.120804942 +0100
@@ -1369,7 +1369,7 @@
   --with-Tecio-lib=ARG    Tecio library directory, ARG = path to libtecio.a
   --with-Tecio-include=ARG
                           Tecio include directory, ARG = path to TECIO.h
-  --with-Metis-lib=ARG    Metis library directory, ARG = path to libmetis.a
+  --with-Metis-lib=ARG    Metis library directory, ARG = path to libmetis.so
   --with-Metis-include=ARG
                           Metis include directory, ARG = path to metis.h
   --with-Metis-version=ARG
@@ -2619,7 +2619,7 @@
 ###########################

 # check for lib
-METISlib=libmetis.a
+METISlib=libmetis.so
 METISheader=metis.h
 METISversion=
 have_METIS="no"
Index: SU2-2.0.8/configure.ac
===================================================================
--- SU2-2.0.8/configure.ac
+++ SU2-2.0.8/configure.ac  2013-12-08 13:56:33.410426071 +0100
@@ -32,7 +32,7 @@
        AS_HELP_STRING([--with-Tecio-include[=ARG]], [Tecio include directory, ARG = path to TECIO.h]), 
    [with_Tecio_include=$withval], [with_Tecio_include="no"])
 AC_ARG_WITH(Metis-lib,
-       AS_HELP_STRING([--with-Metis-lib[=ARG]], [Metis library directory, ARG = path to libmetis.a]), 
+       AS_HELP_STRING([--with-Metis-lib[=ARG]], [Metis library directory, ARG = path to libmetis.so]), 
    [with_Metis_lib=$withval], [with_Metis_lib="no"])
 AC_ARG_WITH(Metis-include,
        AS_HELP_STRING([--with-Metis-include[=ARG]], [Metis include directory, ARG = path to metis.h]), 
@@ -121,7 +121,7 @@
 ###########################

 # check for lib
-METISlib=libmetis.a
+METISlib=libmetis.so
 METISheader=metis.h
 METISversion=
 have_METIS="no"
Index: SU2-2.0.8/Common/src/geometry_structure.cpp
===================================================================
--- SU2-2.0.8/Common/src/geometry_structure.cpp
+++ SU2-2.0.8/Common/src/geometry_structure.cpp 2013-12-08 15:09:06.224673053 +0100
@@ -4847,7 +4847,7 @@
    unsigned long iPoint, iElem, iElem_Triangle, iElem_Tetrahedron, nElem_Triangle,
    nElem_Tetrahedron, kPoint, jPoint, iVertex;
     unsigned short iMarker, iMaxColor = 0, iColor, MaxColor = 0, iNode, jNode;
-   int ne = 0, nn, *elmnts = NULL, etype, *epart = NULL, *npart = NULL, numflag, nparts, edgecut, *eptr;
+   long int ne = 0, nn, *elmnts = NULL, etype, *epart = NULL, *npart = NULL, numflag, nparts, edgecut, *eptr;

     int rank = MPI::COMM_WORLD.Get_rank();
    int size = MPI::COMM_WORLD.Get_size();
@@ -4867,21 +4867,21 @@

    if (GetnDim() == 2) {
        ne = nElem_Triangle;
-       elmnts = new int [ne*3];
+       elmnts = new long int [ne*3];
        etype = 1;
    }
    if (GetnDim() == 3) {
        ne = nElem_Tetrahedron;
-       elmnts = new int [ne*4];
+       elmnts = new long int [ne*4];
        etype = 2;
    }

    nn = nPoint;
    numflag = 0;
    nparts = nDomain;
-   epart = new int [ne];
-   npart = new int [nn];
-   eptr  = new int[ne+1];
+   epart = new long int [ne];
+   npart = new long int [nn];
+   eptr  = new long int[ne+1];
    if (nparts < 2) {
        cout << "The number of domains must be greater than 1!" << endl;
        cout << "Press any key to exit..." << endl;
@@ -4990,7 +4990,7 @@

 #ifdef METIS_5
    /*--- Calling METIS 5.0.2 ---*/
-   int options[METIS_NOPTIONS];
+   long int options[METIS_NOPTIONS];
    METIS_SetDefaultOptions(options);
    options[METIS_OPTION_OBJTYPE] = METIS_OBJTYPE_CUT;
    METIS_PartMeshNodal(&ne, &nn, eptr, elmnts, NULL, NULL, &nparts, NULL, NULL, &edgecut, epart, npart);

Be consistent in file name input files

SU2 right now is inconsistent with how it does file names in the config file. For example, the restart file needs to be specified with a ".dat" suffix, but in the case of the surface files, the ".csv" is added automatically. SU2 should be consistent across all filenames. Preferably, this will be fixed by having the user specify all suffixes. This is a tiny amount of additional work for the user, but it makes writing scripts that use the config file much easier. When the suffix is in the config file, it's easy to have python say "open this file". If the config file just has the base name of the file (no extension) then the knowledge of what suffix SU2 uses must be hard-coded into the follow-on script (which can then break later if SU2 changes).

Node size consistency

SU2 should be consistent if the node numbers are represented by unsigned long, long, long long, unsigned int or int

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.