diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9bf8e6cc..359973cd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -19,7 +19,6 @@ on: - v* branches: - master - - windows-ci-dev #TODO: remove before merge workflow_dispatch: env: diff --git a/CHANGELOG b/CHANGELOG index a079288f..3934b10f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,27 +6,33 @@ _/ _/ _/ _/ _/ _/ _/_/ _/_/_/ _/_/_/_/ _/ _/ _/_/_/ - http://glvis.org + https://glvis.org -Version 4.1.1 (development) -=========================== - -- Added the option to cut a portion of the interiors of 3D faces to expose more - of the mesh. Useful as an alternative to transparency. See keys Ctrl+F3/F4. +Version 4.2 released on May 23, 2022 +==================================== - Added 3D scene export to glTF format (https://www.khronos.org/gltf) which is bound to the key 'G'. This can be used to import GLVis scenes for rendering in Blender, as well as for augmented reality, see https://modelviewer.dev/editor. +- Added the option to cut a portion of the interiors of 3D faces to expose more + of the mesh. Useful as an alternative to transparency. See keys Ctrl+F3/F4. + - Added a third mode to keys 'b'/'B' in 2D to display the mesh boundary colored by boundary element attribute. -- Mac and Windows binaries are now automatically built with GitHub actions CI. +- Support for visualization of pyramid-shaped elements. + +- An edge numbering option is now available in 2D. - In 2D, save and restore solution's value range when using keys 'e' and 'b'. -- An edge numbering option is now available in 2D. +- Mac and Windows binaries are now automatically built with GitHub actions CI. + +- The command-line option -mac was renamed to -save. + +- Various other bugfixes and improvements. Version 4.1, released on Aug 31, 2021 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7eb1632d..6af1a79f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -3,8 +3,12 @@

-License -Doxygen +Release +Build +License +Doxygen +License +License

@@ -287,11 +291,12 @@ Before a PR can be merged, it should satisfy the following: - Local copies of `next` can then be updated with `git fetch origin next && git checkout -B next origin/next`. ### Release Checklist - - [ ] Update the GLVis version in the following files: - [ ] `CHANGELOG` - - [ ] `makefile` - - [ ] `CMakeLists.txt` + - [ ] `README.md` + - [ ] `vcpkg.json` + - [ ] `share/Info.plist` + - [ ] `share/Info.cmake.plist.in` - [ ] Check that version requirements for each of GLVis's dependencies are documented in `INSTALL` and up-to-date - [ ] Update the `CHANGELOG` to organize all release contributions - [ ] Review the whole source code once over diff --git a/INSTALL b/INSTALL index f3087932..405fb71a 100644 --- a/INSTALL +++ b/INSTALL @@ -6,7 +6,7 @@ _/ _/ _/ _/ _/ _/ _/_/ _/_/_/ _/_/_/_/ _/ _/ _/_/_/ - http://glvis.org + https://glvis.org GLVis is a multiplatform OpenGL application and can be built on Linux/Unix systems, including Mac OS X, and under Windows. diff --git a/README b/README deleted file mode 100644 index 90209e21..00000000 --- a/README +++ /dev/null @@ -1,300 +0,0 @@ - GLVis visualization tool - - _/_/_/ _/ _/ _/ _/ - _/ _/ _/ _/ _/_/_/ - _/ _/_/ _/ _/ _/ _/ _/_/ - _/ _/ _/ _/ _/ _/ _/_/ - _/_/_/ _/_/_/_/ _/ _/ _/_/_/ - - http://glvis.org - -GLVis is an OpenGL tool for visualization of finite element meshes and -functions. It is a multiplatform OpenGL application that can be built on -Linux/Unix systems, including Mac OS X, and under Windows. It can also be used -in a Jupyter notebook, or in a web browser, see https://glvis.org/live. - -For building instructions, see the file INSTALL. Copyright information and -licensing restrictions can be found in the file COPYRIGHT. - -When started without any options, glvis starts a server which waits for a socket -connections (on port 19916 by default) and visualizes any received data. This -way the results of simulations on a remote (parallel) machine can be visualized -on the local user desktop. - -GLVis can also be used to visualize a mesh with or without a finite element -function (solution), as in 'glvis -m cube.mesh3d'. For parallel computations, -GLVis supports input from several parallel socket connections as well as the -visualization of parallel meshes and grid functions saved in separate files from -the command line as in 'glvis -np 4 -m mesh -g solution'. In both cases, it will -stitch the results to show the global mesh and solution. GLVis can also run a -batch sequence of commands (GLVis scripts), or display previously saved socket -streams. For a complete list of command line options, type 'glvis -h'. - -Depending on the data type, variety of manipulations can be performed by using -the mouse and by typing (case sensitive) keystrokes in the GLVis window. Here is -a partial list of the available functionality. Some of these keys can also be -provided as input, using the '-k' command-line option and the 'keys' script -command. - -GLVis is distributed under the terms of the BSD-3 license. All new contributions -must be made under this license. See LICENSE and NOTICE for details. - -SPDX-License-Identifier: BSD-3-Clause -LLNL Release Number: LLNL-CODE-443271 -DOI: 10.11578/dc.20171025.1249 - - -Mouse functions -=============== -Left - Rotate the viewpoint -Middle - Translate the viewpoint -Right - Zoom in (up) / Zoom out (down) -Left+Shift - Start spinning the viewpoint (according to dragging vector) - - -Basic key commands -================== -h - Prints a short help message in the terminal - -r - Reset the plot to 3D view -R - Cycle through the six 2D projections (camera looking in +/- x/y/z - direction) -j - Turn on/off perspective -s - Turn on/off unit cube scaling - -c - Toggle the colorbar and caption display state -C - Change the main plot caption -p/P Cycle forward/backwards through color palettes (lots of options, use F6 for - a menu) -t - Cycle materials and lights (5 states) -l - Turns on/off the light -g - Toggle background color (white -> black) - -a - Toggle the bounding box axes - The options are: -> none - -> bounding box with coordinates of the corners - -> bounding box without coordinates - -> red, green, blue colored main x, y, z axes; dashed box -m - Toggle the "mesh" state - The options are: -> no mesh or level lines - -> draw the element edges (i.e. the mesh) - -> draw the level lines (use F5 to modify the level lines) -e - Toggle the "elements" state (see below for vector functions) - The options are: -> show surface elements (corresponding to the function) - -> show no surface elements - -> show element attributes (2D) - -> show element det(J) (2D) - -> show element 1/det(J) (2D) - -> show element kappa (2D) - -> show element kappa + 1/kappa (2D) - -S - Take an image snapshot or record a movie (in spinning mode). - By default, the screenshots are taken in png format, using libpng. When - GLVis is compiled with libtiff support (see INSTALL) then the screenshots - are taken internally and saved in TIFF format (.tif extension). If both of - these options are disabled during the build process, GLVis will use SDL to - take screenshots in bmp format, which it will then convert to png if - ImageMagick's 'convert' tool is available. - -Ctrl+p - Print to a PDF file using gl2ps. Other vector formats (SVG, EPS) are - also possible, but keep in mind that the printing takes a while and the - generated files are big. - -q - Exit - - -Advanced key commands -===================== -f - Change the shading type (the way the elements and mesh are drawn) - The options are: -> one triangle / quad per element with a constant normal - -> one triangle / quad per element with normals averaged - at the vertices - -> multiple triangles / quads per element, also allowing - for the visualization of discontinuous functions and - curvilinear elements (use o/O to control subdivisions) - -o/O - Control element subdivisions (2D) - there are two subdivision factors: -> element subdivision factor s1 - -> boundary subdivision factor s2 -O - Cycle through the "subdivision functions", (prints a message in the - terminal when changed) - The options are: -> Increase subdivision factor: s1 += s2 - -> Decrease subdivision factor: s1 -= s2 - -> Increase bdr subdivision factor: s2++ - -> Decrease bdr subdivision factor: s2-- -o - perform the current "subdivision function" - -A - Turn on/off the use of anti-aliasing/multi-sampling -b - Toggle the boundary in 2D scalar mode. - The options are: -> no boundary - -> black boundary - -> boundary colored with the boundary attribute - Use Shift+F9/F10 to cycle through the boundary attributes. -L - Turn on/off logarithmic scale -\ - Set light source position (see Right+Shift) -* - Zoom in -/ - Zoom out -+ - Stretch in z-direction -- - Compress in z-direction -[ - Enlarge the bounding box (relative to the colorbar) -] - Shrink the bounding box (relative to the colorbar) -( - Shrink the visualization window -) - Enlarge the visualization window -. - Start/stop z-spinning (speed/direction can be controlled with '0'/'Enter') - -arrow keys - Manual rotation -1,2,3,4,5,6,7,8,9 - Manual rotation along coordinate axes -Ctrl+arrow keys - Translate the viewpoint - -Ctrl+o - Toggle an element ordering curve in 2D and 3D - -i - Toggle cutting (clipping) plane in 2D -y/Y - Rotate cutting plane (theta) in 2D -z/Z - Translate cutting plane in 2D - -n/N - Cycle through numberings. - The options are: -> none - -> show element numbering - -> show vertex numbering - -` - Toggle a ruler, with initial origin at the center of the bounding box. The - origin can be later moved with '~'. - The options are: -> none - -> coordinate axes lines - -> coordinate axes planes -~ - Enter new ruler origin - -k/K - Adjust the transparency level. - The balance of transparency can be further adjusted with ',' and '<'. - -! - Toggle the use of (1D) texture (smooth interpolation of colors) - The options are: -> use discrete texture, the number of colors used depends - on the current palette - -> use smooth texture (interpolated from current palette) - -F3/F4 - Shrink/Zoom each element towards its center, to better visualize the - different element shapes -F5 - Change the range and number of the level lines -F6 - Palette menu (negative repeat number flips the palette) -F7 - Change the minimum and maximum values -F8 - List of material subdomains to show -F9/F10 - Walk through material subdomains -F11/F12 - Shrink/Zoom material subdomains (to the centers of the attributes) -Shift+F7 - Set the bounding box from the terminal - - -Advanced mouse functions -======================== -Middle+Ctrl - Object translation (moves the camera left/right/up/down) -Middle+Ctrl+Shift - Object translation (turns the camera left/right/up/down) -Middle+Ctrl+Alt - Moves the camera forward/backward (vertical mouse motion) - and tilts the camera left/right (horizontal mouse motion) -Right+Ctrl - Object scaling (see also '[' and ']') -Left+Alt - Tilt -Right+Shift - Change light source position (see '\') - - -Vector data commands -==================== -v - Toggle the "vector" state (uses vector subdivision factor, accept u/U) - The options are: -> do not show vectors - -> show vectors as displacement - -> show vector field; vectors are uniformly scaled; - the color varies with the magnitude (or the current - "vector-to-scalar function", see keys u/U) - -> show vector field as above, but the vectors are scaled - proportionally to their magnitude -V - Change the scaling of the vectors relative to the default - -d - Toggle the "displaced mesh" state: (see also keys 'n'/'b') - The options are: -> do not show displaced mesh - -> show displaced mesh - -> assuming displacement field show deformation using - Cartesian lines - -> assuming displacement field show deformation using - polar lines -n - increase the displacement amount in 10% steps, wraps around from 100% to 0% -b - decrease the displacement amount in 10% steps, wraps around from 0% to 100% -B - Toggle the boundary in 2D vector mode - -e - Toggle the "elements" state (vector data version) - The options are: -> show surface elements corresponding to the current - "vector-to-scalar function" - -> do not show surface elements - -> assuming a displacement field show det(J)/det(J_d) - -> assuming a displacement field show det(J_d)/det(J) - -u/U - Change the "vector-to-scalar function" and the vector subdivision factor -U - Toggle the functionality of 'u' (prints a message in the terminal when - changed). - The options are: -> Increase the vector subdivision factor - -> Decrease the vector subdivision factor - -> Cycle through "vector-to-scalar functions" choices: - -> magnitude: sqrt(vx^2+vy^2) - -> direction from -pi to pi: atan2(vy,vx) - -> x-component: vx - -> y-component: vy - -> divergence: div(v) - -> curl: curl(v) [skipped for H(div) elements] - -> anisotropy in grad(v) [skipped for H(div) elements] - -3D data commands -================ -i - Toggle cutting (clipping) plane - The options are: -> none - -> cut through the elements - -> show only elements behind the cutting plane -I - Toggle the cutting plane algorithm used when the option "cut through the - elements" is selected. The two algorithms are: - -> slower, more accurate algorithm for curved meshes (default) - -> faster algorithm suitable for meshes with planar faces -x/X - Rotate cutting plane (phi) -y/Y - Rotate cutting plane (theta) -z/Z - Translate cutting plane -E - Display/Hide the elements in the cutting plane -M - Display/Hide the mesh in the cutting plane - -o/O - Refine/de-refine elements - -u/U - Move level surface value up/down -v/V - Add/Delete a level surface value - -w/W - Move boundary elements up/down in direction of the normal (i.e. "plot" - the boundary values in normal direction) - -F3/F4 - Shrink/Zoom boundary elements (to the centers of the attributes) -F8 - List of boundary subdomains to show -F9/F10 - Walk through boundary subdomains -F11/F12 - Shrink/Zoom material subdomains (to the centers of the attributes) - - -3D vector data commands -======================= -v - Toggle the "vector" state - The options are: -> do not show vectors - -> show vectors as displacement - -> show vector field; vectors are uniformly scaled; - the color varies with the magnitude (or the current - "vector-to-scalar function", see key F) - -> show vector field as above, but the vectors are scaled - proportionally to their magnitude - -> show the subset of the vector field with scalar function - around a given value (adjusted with keys u/U and w/W) - -> show the vector field restricted to the boundary of the - domain -V - Cycle the "vector" state in the opposite direction of 'v' - -u/U - Move the level field vectors (in the appropriate "vector" state) -w/W - Add/Delete level field vector (in the appropriate "vector" state) - -d - Toggle the "displaced mesh" state: (see also keys 'n'/'b') - The options are: -> do not show displaced mesh - -> show displaced mesh -n - increase the displacement amount in 10% steps, wraps around from 100% to 0% -b - decrease the displacement amount in 10% steps, wraps around from 0% to 100% - -F - Change the "vector-to-scalar function" - The options are: -> magnitude: sqrt(vx^2+vy^2+vz^2) - -> x-component: vx - -> y-component: vy - -> z-component: vz diff --git a/README.md b/README.md new file mode 100644 index 00000000..a53c428b --- /dev/null +++ b/README.md @@ -0,0 +1,288 @@ + GLVis visualization tool + + _/_/_/ _/ _/ _/ _/ + _/ _/ _/ _/ _/_/_/ + _/ _/_/ _/ _/ _/ _/ _/_/ + _/ _/ _/ _/ _/ _/ _/_/ + _/_/_/ _/_/_/_/ _/ _/ _/_/_/ + + https://glvis.org + +Release +Build +License +Doxygen +License +License + +[GLVis](https://glvis.org) is an OpenGL tool for visualization of finite element +meshes and functions. It is a multiplatform application that can be built on +Linux/Unix systems, including macOS, and under Windows. It can also be used in a +Jupyter notebook, or in a web browser, see https://glvis.org/live. + +- For building instructions, see [INSTALL](INSTALL). + +- The GLVis [key commands](#key-commands) and [mouse functions](#mouse-functions) + are documented below. + +- GLVis is distributed under the terms of the BSD-3 license. All new contributions + must be made under this license. See [LICENSE](LICENSE) and [NOTICE](NOTICE) for details. + +When started without any options, glvis starts a server which waits for a socket +connections (on port `19916` by default) and visualizes any received data. This +way the results of simulations on a remote (parallel) machine can be visualized +on the local user desktop. + +GLVis can also be used to visualize a mesh with or without a finite element +function (solution), as in + +``` +glvis -m cube.mesh3d +``` + +For parallel computations, GLVis supports input from several parallel socket +connections as well as the visualization of parallel meshes and grid functions +saved in separate files from the command line as in + +``` +glvis -np 4 -m mesh -g solution +``` + +When given parallel input, GLVis will stitch the results to show the global mesh +and solution. GLVis can also run a batch sequence of commands (GLVis scripts), +or display previously saved socket streams. + +For a complete list of command line options, type + +``` +glvis -h +``` + +Depending on the data type, variety of manipulations can be performed by using +the mouse and by typing (case sensitive) keystrokes in the GLVis window. Below +is a partial list of the available functionality. Some of these keys can also be +provided as input, using the `-k` command-line option and the `keys` script +command. + + +SPDX-License-Identifier: BSD-3-Clause
+LLNL Release Number: LLNL-CODE-443271
+DOI: 10.11578/dc.20171025.1249 + + +Mouse functions +=============== + +## Basic + +- Left – Rotate the viewpoint +- Right – Zoom in (up) / Zoom out (down) +- Middle – Translate the viewpoint +- Left + Shift – Start spinning the viewpoint (according to the dragging vector) + +## Advanced + +- Left + Alt – Tilt +- Left + Ctrl – Spherical rotation +- Left + Ctrl + Shift – `z`-spinning +- Right + Ctrl – Object scaling (see also [ and ]) +- Right + Shift – Change light source position (see \\) +- Middle + Ctrl – Object translation (moves the camera left/right/up/down) +- Middle + Ctrl + Alt – Moves the camera forward/backward (vertical mouse motion) and tilts the camera left/right (horizontal mouse motion) +- Middle + Ctrl + Shift – Object translation (turns the camera left/right/up/down) + + +Key commands +============ + +## Basic + +- h – Print a short help message in the terminal +- r – Reset the plot to 3D view +- R – Cycle through the six 2D projections (camera looking above/below in `x`/`y`/`z` directions) +- j – Turn on/off perspective +- s – Turn on/off unit cube scaling +- A – Turn on/off the use of anti-aliasing/multi-sampling +- L – Turn on/off logarithmic scale +- c – Toggle the colorbar and caption display state +- C – Change the main plot caption +- p / P – Cycle forward/backwards through color palettes (lots of options, use F6 for a menu) +- t – Cycle materials and lights (5 states) +- i – Toggle cutting plane (different options in 2D and 3D, see below) +- o / O – Control element subdivisions (different options in 2D and 3D, see below) +- l – Turn on/off the light +- g – Toggle background color (white/black) +- a – Toggle the bounding box *axes*. The options are: + - none + - bounding box with coordinates of the corners + - bounding box without coordinates + - red, green, blue colored main `x`, `y`, `z` axes + dashed axes +- m – Toggle the *mesh* state. The options are: + - no mesh or level lines + - draw the element edges (i.e. the mesh) + - draw the level lines (use F5 to modify the level lines) +- e – Toggle the *elements* state (see below for vector functions). The options are: + - show surface elements (corresponding to the function) + - show no surface elements + - (2D only) show element attributes + - (2D only) show element `det(J)` + - (2D only) show element `1/det(J)` + - (2D only) show element `\kappa` + - (2D only) show element `\kappa + 1/\kappa` +- S – Take an image snapshot or record a movie (in spinning mode). By + default, the screenshots are taken in `png` format, using libpng. When GLVis + is compiled with `libtiff` support (see [INSTALL](INSTALL)) then the + screenshots are taken internally and saved in TIFF format (`.tif` + extension). If both of these options are disabled during the build process, + GLVis will use `SDL` to take screenshots in `bmp` format, which it will then + convert to `png` if ImageMagick's `convert` tool is available. +- G – 3D scene export to [glTF format](https://www.khronos.org/gltf) +- Ctrl + p – Print to a PDF file using `gl2ps`. Other + vector formats (SVG, EPS) are also possible, but keep in mind that the + printing takes a while and the generated files are big. +- q – Exit + +## Advanced + +- f – Change the shading type (the way the elements and mesh are drawn). The options are: + - one triangle / quad per element with a constant normal + - one triangle / quad per element with normals averaged at the vertices + - multiple triangles / quads per element, also allowing for the visualization of discontinuous + functions and curvilinear elements (use o / O to control subdivisions) +- \\ – Set light source position (see Right + Shift) +- * / / – Zoom in/out +- + / - – Stretch/compree in `z`-direction +- [ / ] – Shrink/enlarge the bounding box (relative to the colorbar) +- ( / ) – Shrink/enlarge the visualization window +- . – Start/stop `z`-spinning (speed/direction can be controlled with 0 / Enter) +- , , , – Manual rotation +- 1, 2, 3, 4, 5, 6, 7, 8, 9 – Manual rotation along coordinate axes +- Ctrl + , , , – Translate the viewpoint +- Ctrl + o – Toggle an element ordering curve +- n / N – Cycle through numberings. The options are: + - none + - show element numbering + - show edge numbering + - show vertex numbering +- ` – Toggle a ruler, with initial origin at the center of the bounding box. The origin can be later moved with ~. The options are: + - none + - coordinate axes lines + - coordinate axes planes +- ~ - Enter new ruler origin +- k / K - Adjust the transparency level. The balance of + transparency can be further adjusted with , and <. +- ! - Toggle the use of (1D) texture (smooth interpolation of colors). The options are: + - use discrete texture, the number of colors used depends on the current palette + - use smooth texture (interpolated from current palette) +- F5 – Change the range and number of the level lines +- F6 – Palette menu (negative repeat number flips the palette) +- F7 – Change the minimum and maximum values +- Shift + F7 – Set the bounding box from the terminal + +## 2D scalar data + +- i – Toggle cutting (clipping) plane in 2D +- y / Y – Rotate cutting plane (`\theta`) in 2D +- z / Z – Translate cutting plane in 2D +- o / O – Control element subdivisions in 2D + - there are two subdivision factors in this case: element (`s1`) and boundary (`s2`). + - O cycles through the following "subdivision functions", (prints a message in the terminal when changed): + - Increase element subdivision factor: `s1 += s2` + - Decrease element subdivision factor: `s1 -= s2` + - Increase boundary subdivision factor: `s2++` + - Decrease boundary subdivision factor: `s2--` + - o – performs the curently selected function +- b – Toggle the boundary in 2D scalar mode. The options are: + - no boundary + - black boundary + - boundary colored with the boundary attribute + - Use Shift + F9 / F10 to cycle through the boundary attributes. +- F3 / F4 – Shrink/Zoom each element towards its center, in order to better visualize the different element shapes +- F8 – List of material subdomains to show +- F9 / F10 – Walk through material subdomains +- F11 / F12 – Shrink/Zoom material subdomains (to the centers of the attributes) + +## 3D scalar data + +- i – Toggle cutting (clipping) plane in 3D. The options are: + - none + - cut through the elements + - show only elements behind the cutting plane +- I – Toggle the cutting plane algorithm used when the option *cut through the elements* is selected. The two algorithms are: + - slower, more accurate algorithm for curved meshes (default) + - faster algorithm suitable for meshes with planar faces +- x / X – Rotate cutting plane (`\phi`) in 3D +- y / Y – Rotate cutting plane (`\theta`) in 3D +- z / Z – Translate cutting plane in 3D +- E – Display/Hide the elements in the cutting plane +- M – Display/Hide the mesh in the cutting plane +- o / O – Refine/de-refine elements in 3D +- u / U – Move level surface value up/down +- v / V – Add/Delete a level surface value +- w / W – Move boundary elements up/down in direction of + the normal (i.e. "plot" the boundary values in normal direction) +- F3 / F4 – Shrink/Zoom boundary elements (to the centers of the attributes) +- F8 – List of boundary subdomains to show +- F9 / F10 – Walk through boundary subdomains +- F11 / F12 – Shrink/Zoom material subdomains (to the centers of the attributes) + +## 2D vector data + +- v – Toggle the *vector* state (uses vector subdivision factor, accept u / U). The options are: + - do not show vectors + - show vectors as displacement + - show vector field; vectors are uniformly scaled; the color varies with the + magnitude (or the current *vector-to-scalar function*, see keys u / U) + - show vector field as above, but the vectors are scaled proportionally to their magnitude +- V – Change the scaling of the vectors relative to the default +- d – Toggle the *displaced mesh* state: (see also keys n / b). The options are: + - do not show displaced mesh + - show displaced mesh + - assuming displacement field show deformation using Cartesian lines + - assuming displacement field show deformation using polar lines +- n – Increase the displacement amount in 10% steps, wraps around from 100% to 0% +- b – Decrease the displacement amount in 10% steps, wraps around from 0% to 100% +- B – Toggle the boundary in 2D vector mode +- e – Toggle the *elements* state (vector data version). The options are: + - show surface elements corresponding to the current *vector-to-scalar function* + - do not show surface elements + - assuming a displacement field show `det(J)/det(J_d)` + - assuming a displacement field show `det(J_d)/det(J)` +- u / U – Change the *vector-to-scalar function* and the vector subdivision factor +- U – Toggle the functionality of u (prints a message in the terminal when changed). The options are: + - Increase the vector subdivision factor + - Decrease the vector subdivision factor + - Cycle through *vector-to-scalar functions* choices: + - magnitude: `\sqrt{v_x^2+v_y^2}` + - direction from `-\pi` to `\pi`: `atan2(v_y,v_x)` + - `x`-component: `v_x` + - `y`-component: `v_y` + - divergence: `div(v)` + - curl: `curl(v)` [skipped for H(div) elements] + - anisotropy in `grad(v)` [skipped for H(div) elements] + +## 3D vector data + +- v – Toggle the *vector* state. The options are: + - do not show vectors + - show vectors as displacement + - show vector field; vectors are uniformly scaled; the color varies with the + magnitude (or the current *vector-to-scalar function*, see key F) + - show vector field as above, but the vectors are scaled proportionally to + their magnitude + - show the subset of the vector field with scalar function around a given + value (adjusted with keys u / U and w / W) + - show the vector field restricted to the boundary of the domain +- V – Cycle the *vector* state in the opposite direction of v +- u / U – Move the level field vectors (in the appropriate *vector* state) +- w / W – Add/Delete level field vector (in the appropriate *vector* state) +- d – Toggle the *displaced mesh* state (see also keys n / b). The options are: + - do not show displaced mesh + - show displaced mesh +- n – Increase the displacement amount in 10% steps, wraps around from 100% to 0% +- b – Decrease the displacement amount in 10% steps, wraps around from 0% to 100% +- F – Change the *vector-to-scalar function*. The options are: + - magnitude: `\sqrt{v_x^2+v_y^2+v_z^2}` + - `x`-component: `v_x` + - `y`-component: `v_y` + - `z`-component: `v_z` diff --git a/glvis.cpp b/glvis.cpp index d47b018c..1f061947 100644 --- a/glvis.cpp +++ b/glvis.cpp @@ -941,7 +941,7 @@ struct Session } }; -void GLVisServer(int portnum, bool mac, bool fix_elem_orient, +void GLVisServer(int portnum, bool save_stream, bool fix_elem_orient, bool save_coloring) { std::vector current_sessions; @@ -1014,7 +1014,7 @@ void GLVisServer(int portnum, bool mac, bool fix_elem_orient, *isock >> data_type >> ws; - if (mac) + if (save_stream) { viscount++; } @@ -1095,7 +1095,7 @@ void GLVisServer(int portnum, bool mac, bool fix_elem_orient, Session new_session(fix_elem_orient, save_coloring); char tmp_file[50]; - if (mac) + if (save_stream) { sprintf(tmp_file,"glvis-saved.%04d",viscount); ofstream ofs(tmp_file); @@ -1146,7 +1146,7 @@ int main (int argc, char *argv[]) #endif // variables for command line arguments int np = 0; - bool mac = false; + bool save_stream = false; const char *stream_file = string_none; const char *script_file = string_none; const char *font_name = string_default; @@ -1197,8 +1197,8 @@ int main (int argc, char *argv[]) args.AddOption(&secure, "-sec", "--secure-sockets", "-no-sec", "--standard-sockets", "Enable or disable GnuTLS secure sockets."); - args.AddOption(&mac, "-mac", "--save-stream", - "-no-mac", "--dont-save-stream", + args.AddOption(&save_stream, "-save", "--save-stream", + "-no-save", "--dont-save-stream", "In server mode, save incoming data to a file before" " visualization."); args.AddOption(&stream_file, "-saved", "--saved-stream", @@ -1356,7 +1356,7 @@ int main (int argc, char *argv[]) if (input == 1) { // Run server in new thread - std::thread serverThread{GLVisServer, portnum, mac, + std::thread serverThread{GLVisServer, portnum, save_stream, stream_state.fix_elem_orient, stream_state.save_coloring}; diff --git a/lib/gltf.hpp b/lib/gltf.hpp index 953a8efc..42a58bc8 100644 --- a/lib/gltf.hpp +++ b/lib/gltf.hpp @@ -253,7 +253,7 @@ class glTF_Builder // sampler option: magnification filter enum struct mag_filter { NEAREST = 9728, LINEAR = 9729 }; - // sampler optioin: minification filter + // sampler option: minification filter enum struct min_filter { NEAREST = 9728, LINEAR = 9729, NEAREST_MIPMAP_NEAREST = 9984, diff --git a/lib/vssolution3d.cpp b/lib/vssolution3d.cpp index e938f04e..9b0dfe5a 100644 --- a/lib/vssolution3d.cpp +++ b/lib/vssolution3d.cpp @@ -50,6 +50,7 @@ std::string VisualizationSceneSolution3d::GetHelpString() const << "| E - Toggle the elements in the CP |" << endl << "| f - Smooth/Flat/discont. shading |" << endl << "| g - Toggle background |" << endl + << "| G - Export to glTF format |" << endl << "| h - Displays help menu |" << endl << "| i - Toggle cutting plane |" << endl << "| I - Toggle cutting plane algorithm|" << endl diff --git a/share/CMakeLists.txt b/share/CMakeLists.txt index 5cc39112..f24b9282 100644 --- a/share/CMakeLists.txt +++ b/share/CMakeLists.txt @@ -14,8 +14,8 @@ if(NOT WIN32) add_custom_command( OUTPUT logo.rgba.bin.cpp COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/logo.rgba - ${CMAKE_CURRENT_BINARY_DIR}/logo.rgba + ${CMAKE_CURRENT_SOURCE_DIR}/logo.rgba + ${CMAKE_CURRENT_BINARY_DIR}/logo.rgba COMMAND xxd -i logo.rgba > logo.rgba.bin.cpp DEPENDS logo.rgba COMMENT "Generating logo.rgba.bin.o") diff --git a/share/Info.cmake.plist.in b/share/Info.cmake.plist.in index 82a6827c..8606902f 100644 --- a/share/Info.cmake.plist.in +++ b/share/Info.cmake.plist.in @@ -11,7 +11,7 @@ CFBundleIconFile GLVis.icns CFBundleShortVersionString - 4.0.1 + 4.2 CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/share/Info.plist b/share/Info.plist index 1a4be377..069b6226 100644 --- a/share/Info.plist +++ b/share/Info.plist @@ -11,7 +11,7 @@ CFBundleIconFile GLVis.icns CFBundleShortVersionString - 4.0.1 + 4.2 CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/tests/README.md b/tests/README.md index 8f75f5db..5f99bb5f 100644 --- a/tests/README.md +++ b/tests/README.md @@ -6,7 +6,7 @@ _/ _/ _/ _/ _/ _/ _/_/ _/_/_/ _/_/_/_/ _/ _/ _/_/_/ - http://glvis.org + https://glvis.org Automated testing for GLVis