Updated 2D seismic plane waves convergence benchmark.

parent f0cad67b
...@@ -35,27 +35,42 @@ var l_parts = [1, 13]; ...@@ -35,27 +35,42 @@ var l_parts = [1, 13];
for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) { for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) {
for( var l_ty = 0; l_ty < l_base.length; l_ty++ ) { for( var l_ty = 0; l_ty < l_base.length; l_ty++ ) {
for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) { for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) {
console.log( 'generating config for char length / type / part:', l_cls[l_cl], '/', l_base[l_ty], '/', l_parts[l_pa] ); for( var l_ro = 0; l_ro < 2; l_ro++ ) {
var l_id = l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa];
// create reorder-only mesh for parallel configs
if( l_base[l_ty] == 'gts' && l_parts[l_pa] != 1 && l_ro == 1 ) {
l_id = l_id + '_reorder_only';
}
else if( l_ro == 1 ) {
continue;
}
console.log( 'generating config for char length / type / part / reorder only:', l_cls[l_cl], '/', l_base[l_ty], '/', l_parts[l_pa] ), '/', l_ro;
var l_meshBase = 'meshes/gen/edge_v/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa]; var l_meshBase = 'meshes/gen/edge_v/' + l_id;
var l_meshExt = '.msh'; var l_meshExt = '.msh';
var l_config = 'gen/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml'; var l_config = 'gen/' + l_id + '.xml';
l_fs.outputFile( l_fs.outputFile(
l_config, l_config,
nunjucks.render( nunjucks.render(
'config.njk', { 'config.njk', {
i_meshBase: l_meshBase, i_meshBase: l_meshBase,
i_meshExt: l_meshExt, i_meshExt: l_meshExt,
i_errorXml: 'errors/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml' i_waveField: 'wave_field/' + l_id + '/wf',
i_receivers: 'receivers/' + l_id,
i_errorXml: 'errors/' + l_id + '.xml'
}
),
function(l_err) {
if(l_err) return console.log( l_err );
} }
), )
function(l_err) { }
if(l_err) return console.log( l_err );
}
)
} }
} }
} }
console.log( 'done' ) console.log( 'done' )
Meshes for the 2D Plane Waves Setups Meshes for the 2D Plane Waves Setups
==================================== ====================================
The "reorder_only" GTS-versions went through the same reordering as the parallel versions but only have a single partition.
Used commands: Used commands:
.. code-block:: bash .. code-block:: bash
......
...@@ -25,9 +25,11 @@ ...@@ -25,9 +25,11 @@
<edge_v> <edge_v>
<mesh> <mesh>
<periodic>106</periodic> <periodic>106</periodic>
<reorder_only>{{i_reorderOnly}}</reorder_only>
{%- if i_nParts > 1 %} {%- if i_nParts > 1 %}
<n_partitions>{{i_nParts}}</n_partitions> <n_partitions>{{i_nParts}}</n_partitions>
{%- endif %} {%- endif %}
<write_element_annotations>1</write_element_annotations>
<files> <files>
<in>{{i_meshIn}}</in> <in>{{i_meshIn}}</in>
<out> <out>
...@@ -38,7 +40,7 @@ ...@@ -38,7 +40,7 @@
</mesh> </mesh>
<time> <time>
<n_groups>6</n_groups> <n_groups>{{i_nTimeGroups}}</n_groups>
{%- if i_nParts == 1 %} {%- if i_nParts == 1 %}
<files> <files>
<out_time_steps>{{i_statsOut}}</out_time_steps> <out_time_steps>{{i_statsOut}}</out_time_steps>
......
...@@ -49,23 +49,45 @@ for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) { ...@@ -49,23 +49,45 @@ for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) {
) )
} }
for( var l_ty = 0; l_ty < l_base.length; l_ty++ ) { for( var l_ty = 0; l_ty < l_base.length; l_ty++ ) {
for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) { for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) {
console.log( 'generating EDGE-V config for char length / nParts:', l_cls[l_cl], '/', l_parts[l_pa] ) for( var l_ro = 0; l_ro < 2; l_ro++ ) {
l_fs.outputFile( var l_id = l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa];
'gen/configs/edge_v/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml', // create reorder-only mesh for parallel configs
nunjucks.render( if( l_base[l_ty] == 'gts' && l_parts[l_pa] != 1 && l_ro == 1 ) {
'edge_v.njk', { l_id = l_id + '_reorder_only';
i_meshIn: 'gen/gmsh/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.msh', }
i_nParts: l_parts[l_pa], else if( l_ro == 1 ) {
i_meshOut: 'gen/edge_v/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa], continue;
i_statsOut: 'gen/stats/edge_v_' + l_cls[l_cl] + '.csv',
}
),
function(l_err) {
if(l_err) return console.log( l_err );
} }
)
console.log( 'generating EDGE-V config for char length / nParts / reorder only:', l_cls[l_cl], '/', l_parts[l_pa], '/', l_ro )
var l_configOut = 'gen/configs/edge_v/' + l_id + '.xml';
var l_nTimeGroups = 1;
if( l_base[l_ty] == 'lts' ) {
l_nTimeGroups = 5;
}
var l_meshOut = 'gen/edge_v/' + l_id;
var l_statsOut = 'gen/stats/edge_v_' + l_id + '.csv';
l_fs.outputFile(
l_configOut,
nunjucks.render(
'edge_v.njk', {
i_meshIn: 'gen/gmsh/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.msh',
i_nParts: l_parts[l_pa],
i_nTimeGroups: l_nTimeGroups,
i_reorderOnly: l_ro,
i_meshOut: l_meshOut,
i_statsOut: l_statsOut,
}
),
function(l_err) {
if(l_err) return console.log( l_err );
}
)
}
} }
} }
} }
......
...@@ -42,6 +42,12 @@ do ...@@ -42,6 +42,12 @@ do
do do
echo "$(date) running EDGE-V for char length ${l_cl} for nParts ${l_pa}" echo "$(date) running EDGE-V for char length ${l_cl} for nParts ${l_pa}"
edge_v -x gen/configs/edge_v/${l_ty}_cl_${l_cl}_pa_${l_pa}.xml 2>&1 > gen/logs/${l_ty}_cl_${l_cl}_pa_${l_pa}_edge_v.log edge_v -x gen/configs/edge_v/${l_ty}_cl_${l_cl}_pa_${l_pa}.xml 2>&1 > gen/logs/${l_ty}_cl_${l_cl}_pa_${l_pa}_edge_v.log
if [[ l_pa -gt 1 && ${l_ty} == 'gts' ]]
then
echo "$(date) running EDGE-V for char length ${l_cl} for nParts ${l_pa} (reorder only)"
edge_v -x gen/configs/edge_v/${l_ty}_cl_${l_cl}_pa_${l_pa}_reorder_only.xml 2>&1 > gen/logs/${l_ty}_cl_${l_cl}_pa_${l_pa}_reorder_only_edge_v.log
fi
done done
done done
done done
Runs of the 2D Plane Waves Setups
=================================
Used commands:
.. code-block:: bash
./run_all.sh -e $(pwd)/edge
...@@ -71,6 +71,12 @@ do ...@@ -71,6 +71,12 @@ do
else else
echo "$(date) running EDGE for ${l_ty}, char length ${l_cl} and for nParts ${l_pa}" echo "$(date) running EDGE for ${l_ty}, char length ${l_cl} and for nParts ${l_pa}"
mpiexec --oversubscribe -n ${l_pa} ${EDGE_PATH} -x configs/gen/${l_ty}_cl_${l_cl}_pa_${l_pa}.xml 2>&1 > logs/edge_${l_ty}_cl_${l_cl}_pa_${l_pa}.log mpiexec --oversubscribe -n ${l_pa} ${EDGE_PATH} -x configs/gen/${l_ty}_cl_${l_cl}_pa_${l_pa}.xml 2>&1 > logs/edge_${l_ty}_cl_${l_cl}_pa_${l_pa}.log
if [[ ${l_ty} == 'gts' ]]
then
echo "$(date) running EDGE for ${l_ty}, char length ${l_cl} and for nParts ${l_pa} (reorder only)"
${EDGE_PATH} -x configs/gen/${l_ty}_cl_${l_cl}_pa_${l_pa}_reorder_only.xml 2>&1 > logs/edge_${l_ty}_cl_${l_cl}_pa_${l_pa}_reorder_only.log
fi
fi fi
done done
done done
......
Configs for the 3D Plane Waves Setups
=====================================
Used commands:
.. code-block:: bash
./gen_configs.js
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
@author Alexander Breuer (breuer AT mytum.de) @author Alexander Breuer (breuer AT mytum.de)
@section LICENSE @section LICENSE
Copyright (c) 2021, Friedrich Schiller University Jena
Copyright (c) 2019, Alexander Breuer Copyright (c) 2019, Alexander Breuer
Copyright (c) 2016, Regents of the University of California Copyright (c) 2016, Regents of the University of California
All rights reserved. All rights reserved.
...@@ -25,9 +26,10 @@ ...@@ -25,9 +26,10 @@
<edge> <edge>
<cfr> <cfr>
<mesh> <mesh>
<files> <in>
<in>{{i_meshIn}}</in> <base>{{i_meshBase}}</base>
</files> <extension>{{i_meshExt}}</extension>
</in>
<boundary> <boundary>
<periodic>106</periodic> <periodic>106</periodic>
</boundary> </boundary>
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* @author Alexander Breuer (breuer AT mytum.de) * @author Alexander Breuer (breuer AT mytum.de)
* *
* @section LICENSE * @section LICENSE
* Copyright (c) 2021, Friedrich Schiller University Jena
* Copyright (c) 2019, Alexander Breuer * Copyright (c) 2019, Alexander Breuer
* All rights reserved. * All rights reserved.
* *
...@@ -28,32 +29,33 @@ var l_fs = require('fs-extra'); ...@@ -28,32 +29,33 @@ var l_fs = require('fs-extra');
// minimum edge lengths // minimum edge lengths
var l_cls = [25, 20, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]; var l_cls = [25, 20, 15, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
var l_base = ['lts', 'gts_on_lts', 'gts']; var l_base = ['lts', 'gts'];
var l_parts = [1, 8];
for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) { for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) {
for( var l_ty = 0; l_ty < l_base.length; l_ty++ ) { for( var l_ty = 0; l_ty < l_base.length; l_ty++ ) {
console.log( 'generating config for char length:', l_cls[l_cl] ) for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) {
console.log( 'generating config for char length / type / part:', l_cls[l_cl], '/', l_base[l_ty], '/', l_parts[l_pa] );
var l_path = 'meshes/gen/ascii/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.msh';
if( l_base[l_ty] == 'lts' ) {
l_path = 'meshes/gen/hdf5/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.h5m'
}
else if( l_base[l_ty] == 'gts_on_lts' ) {
l_path = 'meshes/gen/ascii/lts_' + l_cls[l_cl] + '.msh'
}
l_fs.outputFile( var l_meshBase = 'meshes/gen/edge_v/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa];
'gen/configs/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.xml', var l_meshExt = '.msh';
nunjucks.render( var l_config = 'gen/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml';
'config.njk', {
i_meshIn: l_path, l_fs.outputFile(
i_errorXml: 'errors/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.xml' l_config,
} nunjucks.render(
), 'config.njk', {
function(l_err) { i_meshBase: l_meshBase,
if(l_err) return console.log( l_err ); i_meshExt: l_meshExt,
} i_errorXml: 'errors/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml'
) }
} ),
function(l_err) {
if(l_err) return console.log( l_err );
}
)
}
}
} }
console.log( 'done' ) console.log( 'done' )
Meshes for the 3D Plane Waves Setups
====================================
Used commands:
.. code-block:: bash
./generate.sh
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
@author Alexander Breuer (breuer AT mytum.de) @author Alexander Breuer (breuer AT mytum.de)
@section LICENSE @section LICENSE
Copyright (c) 2021, Friedrich Schiller University Jena
Copyright (c) 2019, Alexander Breuer Copyright (c) 2019, Alexander Breuer
All rights reserved. All rights reserved.
...@@ -24,18 +25,12 @@ ...@@ -24,18 +25,12 @@
<edge_v> <edge_v>
<mesh> <mesh>
<periodic>106</periodic> <periodic>106</periodic>
{%- if i_nParts > 1 %}
<n_partitions>{{i_nParts}}</n_partitions> <n_partitions>{{i_nParts}}</n_partitions>
{%- endif %}
<files> <files>
<in>{{i_meshIn}}</in> <in>{{i_meshIn}}</in>
<out>{{i_meshOut}}.h5m</out> <out>
{%- if i_nParts > 1 %}
<out_by_partition>
<base>{{i_meshOut}}</base> <base>{{i_meshOut}}</base>
<extension>.h5m</extension> <extension>.msh</extension></out>
</out_by_partition>
{%- endif %}
</files> </files>
</mesh> </mesh>
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
* @author Alexander Breuer (breuer AT mytum.de) * @author Alexander Breuer (breuer AT mytum.de)
* *
* @section LICENSE * @section LICENSE
* Copyright (c) 2021, Friedrich Schiller University Jena
* Copyright (c) 2019, Alexander Breuer * Copyright (c) 2019, Alexander Breuer
* All rights reserved. * All rights reserved.
* *
...@@ -46,24 +47,24 @@ for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) { ...@@ -46,24 +47,24 @@ for( var l_cl = 0; l_cl < l_cls.length; l_cl++ ) {
if(l_err) return console.log( l_err ); if(l_err) return console.log( l_err );
} }
) )
}
for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) { for( var l_pa = 0; l_pa < l_parts.length; l_pa++ ) {
console.log( 'generating EDGE-V config for char length / nParts:', l_cls[l_cl], '/', l_parts[l_pa] ) console.log( 'generating EDGE-V config for char length / nParts:', l_cls[l_cl], '/', l_parts[l_pa] )
l_fs.outputFile( l_fs.outputFile(
'gen/configs/edge_v/lts_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml', 'gen/configs/edge_v/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa] + '.xml',
nunjucks.render( nunjucks.render(
'edge_v.njk', { 'edge_v.njk', {
i_meshIn: 'gen/ascii/lts_' + l_cls[l_cl] + '.msh', i_meshIn: 'gen/gmsh/' + l_base[l_ty] + '_' + l_cls[l_cl] + '.msh',
i_nParts: l_parts[l_pa], i_nParts: l_parts[l_pa],
i_meshOut: 'gen/hdf5/lts_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa], i_meshOut: 'gen/edge_v/' + l_base[l_ty] + '_cl_' + l_cls[l_cl] + '_pa_' + l_parts[l_pa],
i_statsOut: 'gen/stats/edge_v_' + l_cls[l_cl] + '.csv', i_statsOut: 'gen/stats/edge_v_' + l_cls[l_cl] + '.csv',
}
),
function(l_err) {
if(l_err) return console.log( l_err );
} }
), )
function(l_err) { }
if(l_err) return console.log( l_err );
}
)
} }
} }
console.log( 'done' ) console.log( 'done' )
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
# @author Alexander Breuer (breuer AT mytum.de) # @author Alexander Breuer (breuer AT mytum.de)
# #
# @section LICENSE # @section LICENSE
# Copyright (c) 2021, Friedrich Schiller University Jena
# Copyright (c) 2019, Alexander Breuer # Copyright (c) 2019, Alexander Breuer
# All rights reserved. # All rights reserved.
# #
...@@ -26,7 +27,7 @@ echo "gmsh-version:" ...@@ -26,7 +27,7 @@ echo "gmsh-version:"
gmsh --version gmsh --version
rm -r gen 2> /dev/null rm -r gen 2> /dev/null
mkdir -p gen/ascii gen/hdf5 gen/logs mkdir -p gen/gmsh gen/edge_v gen/logs
./gen_configs.js ./gen_configs.js
...@@ -35,12 +36,12 @@ do ...@@ -35,12 +36,12 @@ do
for l_ty in gts lts for l_ty in gts lts
do do
echo "$(date) running gmsh char length ${l_cl} for type ${l_ty}" echo "$(date) running gmsh char length ${l_cl} for type ${l_ty}"
gmsh -3 -format msh2 gen/configs/gmsh/${l_ty}_${l_cl}.geo -o gen/ascii/${l_ty}_${l_cl}.msh 2>&1 > gen/logs/${l_ty}_${l_cl}.msh.log gmsh -3 -format msh2 gen/configs/gmsh/${l_ty}_${l_cl}.geo -o gen/gmsh/${l_ty}_${l_cl}.msh > gen/logs/gmsh_${l_ty}_${l_cl}.log 2>&1
done
for l_pa in 1 8 for l_pa in 1 8
do do
echo "$(date) running EDGE-V for char length ${l_cl} for nParts ${l_pa}" echo "$(date) running EDGE-V for char length ${l_cl} for nParts ${l_pa}"
edge_v -x gen/configs/edge_v/lts_cl_${l_cl}_pa_${l_pa}.xml 2>&1 > gen/logs/lts_cl_${l_cl}_pa_${pa}.h5m.log edge_v -x gen/configs/edge_v/${l_ty}_cl_${l_cl}_pa_${l_pa}.xml > gen/logs/edge_v_${l_ty}_cl_${l_cl}_pa_${l_pa}.log 2>&1
done
done done
done done
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment