Releases: fortesg/fortrantestgenerator
CESM2
NICAM
- Template for the NICAM model
- Small change in Standalone template
- Bug fixes
Fix release
-
Better support of upper case file endings
-
Bug fixes
Full Types and Better Templates
-
Added support for
ALWAYS_FULL_TYPES
option in FCG v1.8.0 -
Shortened templates: merged
ftg_${subroutine.name}_capture_input
andftg_${subroutine.name}_capture_output
toftg_${subroutine.name}_capture_data
, including some if-statements to distinguish between input and output. -
Added
-v/--verbose
command-line option to all replay templates, settingftg_cmp_print_when_equal
to.TRUE.
-
IconJsbachMock
template adapted to latest version of jsbach-mock -
Bug fixes
-
More tests
-
Refactorings
Requires FortranCallGraph v1.8.0+ and Serialbox2 v.2.5.1+.
Abstract Types, Templates and Merging
-
Restructured and simplified templates and Template API (incl. some incompatibilities to previous version)
-
All templates now contain result checks, no external tools needed anymore. Fixes #8.
-
Removed
IconCompare
template sinceIconStandalone
now does the same now -
Removed
IconTestbed
template -
Introduced
IconJsbachMock
template making use of jsbach-mock -
Support for abstract types with designated subtype, see also latest FCG release. Fixes #17.
Example:
An FCG configuration like
ABSTRACT_TYPE_IMPLEMENTATIONS = {'my_abstract_type':('my_subtype_module','my_subtype')}
might end up in code like
CLASS(my_subtype_module), POINTER :: foo
...
SELECT TYPE (polym1 => foo)
TYPE IS (my_subtype)
CALL ftg_write('foo%bar', polym1%bar)
END SELECT
- Introduced placeholder functions
$mergeBegin()
and$mergeEnd
that enable FTG to merge similar blocks. Fixes #20.
Example:
If a template code like
! OPTIONAL ARGUMENTS
#for $var in $args.allOut.optionals.usedVariables
IF (PRESENT($var.container(0))) THEN $mergeBegin('present')
$ftgWrite($var) $clearLine
END IF $mergeEnd('present')
#end for
would usually generate the following:
! OPTIONAL ARGUMENTS
IF (PRESENT(foo)) THEN
ftgWrite('foo%bar', foo%bar)
END IF
IF (PRESENT(foo)) THEN
ftgWrite('foo%baz', foo%baz)
END IF
it will automatically be merged to:
! OPTIONAL ARGUMENTS
IF (PRESENT(foo)) THEN
ftgWrite('foo%bar', foo%bar)
ftgWrite('foo%baz', foo%baz)
END IF
Only works with simple blocks with one start end one end. Does not work with IF ... ELSE ... END IF
structures or similar.
-
Introduced
$clearLine
placeholder to remove unwanted empty lines (e.g. created by another placeholder). -
Added command-line option
-m
that activates time measurement of the code generation stages -
Added command-line option
-cc
that clears the callgraph cache, similar to the-cc
option of FCG. Fixes #21.
Requires FortranCallGraph v1.7.0+ and Serialbox2 v.2.5.1+.
Python 3
Thesis template
- Added template
BaseCompare
as example template for my PhD thesis - Minor changes in all templates
- Bug fixes
Function Results, Step 2
- Support function results with derived types
- Fixes #7
- Refactoring
- Code clean up
Requires FortranCallGraph v1.5.0+ and Serialbox2 v.2.5.1+.
Function Results
-
Function results are now captured and, in case of the IconCompare template, compared.
Currently, this only works if the result have a built-in type.
See #7. -
Refactored comma separation of arguments in templates.
Decoupling
First attempt to decouple the Replay Code from the Capture Code (#8).
- Export Code will now also be generated together with Replay Code and not only together with the Capture Code. It will only be generated if not already there.
- Export and Capture backups can now be distinguished by there file suffixes (
*.export.ftg-backup
and*.capture.ftg-backup
). - Adds command line option
-e/--export
to only generate Export Code. - Adds command line option
-a/--restoreCapture
to restore only Capture backups. - Adds template IconCompare that uses the new Serialbox2 extension
ftg_compare
to directly compare the output data with the stored values from the Serializer. This way, the Replay Code no longer needs the Capture Code to be there.
Requires FortranCallGraph v1.4.0+ and Serialbox2 v.2.5.1+.