# Release notes

## APM 1.3.0 (29 March 2026 - latest)

* Converted all influence matrices to **row‑major layout**, further accelerating parallel BiCGSTAB iterations.
* Added a **new doublet‑gradient formulation** based on the Hess & Smith doublet–vortex‑ring equivalence, enabling more accurate surface‑gradient evaluation.
* Introduced **doublet‑gradient smoothing via Gauss–Seidel**, reducing numerical noise and improving convergence stability on complex geometries.
* Performed **minor code refactoring and general performance improvements** across core routines.

## APM 1.2.0 (7 February 2026 )

* Improved trailing edge detection algorithm.&#x20;
* **APM is now free for non-commercial use.** The free version of APM is limited to 5000 panels and 50 unsteady timesteps. Control surface, actuator disk, and probe definitions are disabled. The vortex particle wake option, the symmetry option, and the restart from checkpoint options are disabled.

## APM 1.1.0 (2 November 2024)

* Improved control surface morphing algorithm. Control surface element detection was improved for control surfaces with swept hinges.
* Added wake\_particle\_smoothing\_radius option in the configuration file.
* Minor performance improvements.

## APM 1.0.9 (2 March 2024)

* Added support for UCD and WRL mesh formats. By default, APM will try to read a mesh in STL format. If no mesh in STL format is present, APM will try to read a mesh in UCD format. If no mesh in UCD format is present, APM will try to read a mesh in WRL format. The UCD and WRL formats support structured and unstructured elements. Check the corresponding section in the documentation for more information.

## APM 1.0.8 (1 October 2023)

* Added an extended\_output option in the conf file. If the extended\_output option is set to 1 each panel force and moment vector will be appended to the Paraview and Tecplot output files.

## APM 1.0.7 (9 February 2023)

* Added an x-z symmetry option to the APM solver. The symmetry option reduces the solution time and the required memory by a factor of 2. Check the corresponding section in the documentation for more information.
* Added Trefftz plane analysis option for steady and unsteady simulations. Check the corresponding section in the documentation for more information.
* Added a secondary APM executable where the solution is performed with double-precision floating point numbers. Note that for the same number of panels, the double-precision APM executable will require more memory.&#x20;
* Support for hybrid meshes - made up of quadrilateral and triangular panels.&#x20;
* Modified the body-to-wind transformation so CL, CD and CC follow the commonly adopted convention \[1].
* Various bug-fixes.

## APM 1.0.6 (4 January 2022)

* Added support for multiple wake-body intersections. E.g. intersections between a horizontal tail and a fuselage and a main wing and a fuselage.
* Added a "mirror" option for each control surface. By default, the value of the mirror option is 1. A value of 1 will mirror the control surface across the x-z body-fixed frame. If mirroring is not required the value of the mirror option can be set to 0.

## APM 1.0.5 (10 October 2021)

* Further improved performance by parallelising any remaining "serial" for loops
* Improved the panel neighbour search algorithm
* Added a feature where a **.vtu** or **.dat** files are created if the trailing edge search algorithm fails. The files can be opened with ParaView or Tecplot and used for debugging.
* Added a feature in the **.stl** file reader which rounds the coordinates in the file to the 6th digit after the decimal point

## APM 1.0.4 (8 August 2021)

* Improved performance by removing unnecessary copying
* Removed the **.res** output format
* Changed the integrated loads file format from **.ires** to **.loads**
* Removed email and password authentication
* Removed the **.mesh** file format.
* Added a custom **.stl** file format that supports both structured and unstructured meshes.

## APM 1.0.3 (9 May 2021)

* Fixed bugs in the restart from checkpoint feature
* Added a new authentication method (using a licence key). The authentication method uses an environmental variable "APM\_KEY".

## APM 1.0.2 (27 May 2020)

* Fixed bugs in **.conf** file reader and in the JSON file writer

## APM 1.0.1 (17 April 2020)

* Added a **.json** output format. JSON results can be viewed in the APM Viewer available at <https://apm.aviumtechnologies.com/viewer>
* Added a new method for pressure calculation (LSH) which uses inverse weighted distance interpolation and linear shape functions
* Renamed the "high\_order" option in the **.conf** file to "doublet\_gradient\_scheme". The doublet\_gradient\_scheme setting accepts the following values:
  * 0 - the pressure is calculated with the CHTLS scheme
  * 1 - the pressure is calculated with the WLS scheme
  * 2 - the pressure is calculated with the LSH scheme
  * 3 - the pressure is calculated with the FD scheme (the FD scheme can only be used for models with quadrilateral panels

## APM 1.0.0 (30 October 2019)&#x20;

* Initial release

## Testing new releases

Unit and integration testing is performed for each new APM release. Every portion of the software is tested - from influence calculation functions to gradient functions and helper functions. The solver and preprocessor are also tested by running a series of simulations (test cases).&#x20;

```
...
[----------] 7 tests from HelpersTests
[ RUN      ] HelpersTests.DegToRad
[       OK ] HelpersTests.DegToRad (0 ms)
[ RUN      ] HelpersTests.RadToDeg
[       OK ] HelpersTests.RadToDeg (0 ms)
[ RUN      ] HelpersTests.Sign
[       OK ] HelpersTests.Sign (0 ms)
[ RUN      ] HelpersTests.Factorial
[       OK ] HelpersTests.Factorial (0 ms)
[ RUN      ] HelpersTests.LSQR
[       OK ] HelpersTests.LSQR (14 ms)
[ RUN      ] HelpersTests.EllipticKEPI
[       OK ] HelpersTests.EllipticKEPI (0 ms)
[ RUN      ] HelpersTests.CHTLS
[       OK ] HelpersTests.CHTLS (0 ms)
[----------] 7 tests from HelpersTests (40 ms total)

[----------] 1 test from DoubletGradientTests
[ RUN      ] DoubletGradientTests.FDWLSLSFCHTLSTests
[       OK ] DoubletGradientTests.FDWLSLSFCHTLSTests (0 ms)
[----------] 1 test from DoubletGradientTests (3 ms total)

[----------] 1 test from ConfigTests
[ RUN      ] ConfigTests.ReadTest
[       OK ] ConfigTests.ReadTest (6 ms)
[----------] 1 test from ConfigTests (8 ms total)

[----------] 1 test from ActuatorDiskTests
[ RUN      ] ActuatorDiskTests.VelocityInfluenceTest
[       OK ] ActuatorDiskTests.VelocityInfluenceTest (0 ms)
[----------] 1 test from ActuatorDiskTests (3 ms total)

[----------] 12 tests from InfluenceTests
[ RUN      ] InfluenceTests.NearPotentialInfluenceTest
[       OK ] InfluenceTests.NearPotentialInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.FarPotentialInfluenceTest
[       OK ] InfluenceTests.FarPotentialInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.NearDoubletVelocityInfluenceTest
[       OK ] InfluenceTests.NearDoubletVelocityInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.NearSourceVelocityInfluenceTest
[       OK ] InfluenceTests.NearSourceVelocityInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.FarDoubletVelocityInfluenceTest
[       OK ] InfluenceTests.FarDoubletVelocityInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.FarSourceVelocityInfluenceTest
[       OK ] InfluenceTests.FarSourceVelocityInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.NearDoubletVelocityGradientInfluenceTest
[       OK ] InfluenceTests.NearDoubletVelocityGradientInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.FarDoubletVelocityGradientInfluenceTest
[       OK ] InfluenceTests.FarDoubletVelocityGradientInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.NearSourceVelocityGradientInfluenceTest
[       OK ] InfluenceTests.NearSourceVelocityGradientInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.FarSourceVelocityGradientInfluenceTest
[       OK ] InfluenceTests.FarSourceVelocityGradientInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.ParticleVelocityAndVelocityGradientInfluenceTest
[       OK ] InfluenceTests.ParticleVelocityAndVelocityGradientInfluenceTest (0 ms)
[ RUN      ] InfluenceTests.SpecialCasesInfluenceTest
[       OK ] InfluenceTests.SpecialCasesInfluenceTest (0 ms)
[----------] 12 tests from InfluenceTests (25 ms total)

[----------] 11 tests from PreprocessorTests
[ RUN      ] PreprocessorTests.AGARD
...
```

## References

\[1] Brian L. Stevens and Frank L. Lewis.  "Aircraft control and simulation / Brian L. Stevens, Frank L. Lewis," Wiley, New York  1992.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.aviumtechnologies.com/release-notes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
