# AcuRunFwh

Run AcuFwh to propagate the acoustic source computed in AcuSolve to far field observer locations.

## Syntax

acuRunFwh [options]

## Type

AcuSolve Post-Processing Program

## Description

AcuRunFwh is used to launch the program AcuFwh, which propagates the acoustic sources computed by AcuSolve to far field microphone locations based on the Ffowcs-Williams-Hawking approach. AcuFwh acts as a post-processor to an AcuSolve run and relies on data written to disk during the simulation. The FWH_OUTPUT and FWH_SURFACE_OUTPUT AcuSolve input file commands control what data is written to disk.

In the following, the full name of each option is followed by its abbreviated name and its type. See below for more individual option details:

help or h (boolean)
If set, the program prints a usage message and exits. The usage message includes all available options, their current values, and the place where each option is set.
problem or pb (string)
The name of the problem is specified via this option. This name is used to build internal file names and to generate output files. All generated output files start with the problem name.
working_directory or dir (string)
All internal files are stored in this directory. This directory does not need to be on the same file system as the user-supplied input files.
problem_directory or pdir (string)
The home directory of the problem. This is where the user input files reside.
run_id or run (integer)
Number of the run in which the translation is requested. If run_id is set to 0, the last run in the working directory is assumed.
time_steps or ts (string)
Comma-separated list of time steps to be translated. The comma-separated fields have the general range format beg:end:inc, where :end:inc and :inc are optional. beg specifies the first time step in the range. It may be either a given time step, as specified by a number, the letter F (or f) requesting the first available time step, or the letter L (or l) requesting the last available time step. end is the last time step in the range. It may be either a time step number or L (or l) requesting the last available time step. If end is missing, the range is assumed to simply represent a single time step (that is, end=beg and inc=1). inc is the increment that ranges from beg to end. It may be either a number or the letter A (or a) requesting all available time steps in the range. If :inc is missing, it is assumed to be one. The range may also be specified by the single letter A (or a), requesting all available time steps. This is equivalent to F:L:A.
ignore_missing_steps or imts (boolean)
If set, missing requested time steps are ignored. Otherwise, if the requested time step does not exist, the program issues an error message and exits.
fwh_output_sets or ofss (string)
Comma-separated list of fwh surface output sets to be propagated by AcuFwh. Each item in the list corresponds to the qualifier of a FWH_SURFACE_OUTPUT command in the input file.
time_incement or dt (real)
Time increment which is used for acoustic calculations. If zero, the AcuSolve time increment is used.
sound speed or c (real)
The speed of sound that is used for acoustic calculations. The default value is 343.2.
microphone_file_name or mf (string)
The name of the ascii file containing the microphone coordinates and IDs. Each line in the file represents one microphone. The file should have four columns: the first column represents the microphone ID and the other three columns represent the microphone coordinates. The default is <problem>.mic.
symmetry_type or smt (enumerated)
Type of symmetry to use.
none
No symmetry is considered.
planar
Planar symmetry is applied.
axisymmetric
Axisymmetry is applied.

If none (default), no symmetry is considered and the acoustic problem is solved in an infinite domain. The values one and two indicate planar symmetry and axisymmetry, respectively. When planar symmetry is used, the sound source can be mirrored with respect to one, two, or three orthogonal planes. Axisymmetry, on the other hand, replicates the sound source about an axis.

num_symmetry_planes or nsp (integer)
This option is used with planar symmetry type and represents the number of symmetry planes than can be one, two, or three. If two or three planes are used, they should be orthogonal.
symmetry_center or sc (string)
This option is used with planar symmetry type, and is the comma-separated coordinates of a reference point on the symmetry plane(s). If more than one plane is used, the reference point should belong to all of the planes.
symmetry_direction_1 or sn1 (string)
This option is used with planar symmetry type, and is the comma-separated elements of a vector normal to the first plane of symmetry. The default is 1,0,0.
symmetry_direction_2 or sn2 (string)
This option is used with planar symmetry type, and is the comma-separated elements of a vector normal to the second plane of symmetry. The default is 0,1,0.
symmetry_direction_3 or sn3 (string)
This option is used with planar symmetry type, and is the comma-separated elements of a vector normal to the third plane of symmetry. The default is 0,0,1.
num_axisymmetric_cuts or nac (integer)
This option is used with axisymmetry and indicates the number of axisymmetric replications of the sound source. The default is zero.
axisymmetric_axis or asa (string)
This option is used with axisymmetry and is the comma-separated coordinates and direction of the axisymmetry axis.
angular_velocity (string)
Angular velocity of rotating surfaces, specified as a comma separated list. Used with fixed_flow = true.
rotation_center (string)
Coordinates of rotation center, specified as a comma separated list. Used with fixed_flow = true.
fixed_flow (boolean)
This boolean option indicates the rotation of a steady solution to generate the acoustic signal. This option is turned off by default.
Sets the number of rotations of a steady solution. Used with fixed_flow = true.
log_output or log (boolean)
If set, the printed messages of AcuRunFwh are redirected to the log file problem.run.flog, where problem is the string supplied to the problem option and run is the ID of the current trace run. Otherwise, the messages are sent to the screen and no logging is performed.
append_log or append (boolean)
If log_output is set, this parameter specifies whether to create a new .log file or append to an existing one.
echo_help or eh (boolean)
Echo the command help (that is, the results of acuRunFwh -h) to the .log file.
message_passing_type or mp (enumerated)
Type of message passing environment used for the parallel processing of the acoustic propagation:
none
Run in single-processor mode.
impi
Run in parallel on all platforms using Intel MPI.
pmpi
Run in parallel on all platforms using Platform MPI.
mpi
Run in parallel on all platforms using MPICH.
msmpi
Run in parallel on Windows using Microsoft MPI.
hpmpi
Run in parallel on all platforms using Platform MPI. Note that HP-MPI has been replaced by Platform MPI and this option is only included for backward compatibility. Identical to setting mp=pmpi.
openmp
Run in parallel on all platforms using OpenMP.
num_processors or np (integer)
This option specifies the total number of threads to be used. The number of physical processors used is num_processors divided by num_threads. If message_passing_type is set to none, num_processors is reset to 1.
This option specifies the number of threads per processor to be used. If num_threads > 1, it converts an MPI run to a hybrid MPI/OpenMP run.
host_lists or hosts (string)
List of machines (hosts) separated by commas. This list may exceed num_processors; the extra hosts are ignored. This list may also contain fewer entries than num_processors. In this case, the hosts are populated in the order that they are listed. The process is then repeated, starting from the beginning of the list, until each process has been assigned to a host. Multiple process may be assigned to a single host in one entry by using the following syntax: host:num_processes, where host is the host name, and num_processes is the number of processes to place on that machine. When this option is set to _auto, the local host name is used.

The following examples illustrate the different methods of assigning the execution hosts for a parallel run:

Example 1:
acuRunFwh -np 6 -hosts node1,node2

Result: The node list is repeated to use the specified number of processors. The processes are assigned: node1, node2, node1, node2, node1, node2

Example 2:
acuRunFwh -np 6 -hosts node1,node1,node2,node2,node1,node2

Result: The processes are assigned: node1, node1, node2, node2, node1, node2

Example 3:
acuRunFwh -np 6 -hosts node1:2,node2:4

Result: The processes are assigned: node1, node1, node2, node2, node2, node2

pbs (boolean)
Set parallel data (such as np and hosts) from PBS variable PBS_NODEFILE. Used when running AcuFwh through a PBS queue.
lsf (boolean)
Set parallel data (such as np and hosts) from LSF variable LSB_HOSTS. Used when running AcuFwh through a LSF queue.
sge (boolean)
Set parallel data (such as np and hosts) from SGE file $TMPDIR/machines. nbs (boolean) Set parallel data (such as np and hosts) from NBS var NBS_MACHINE_FILE. ccs (boolean) Set parallel data (such as np and hosts) from CCS var CCP_NODES. slurm (boolean) Set parallel data (such as np and hosts) from output of srun hostname -s command. acufwh_executable or acufwh (string) Full path of the AcuFwh executable. mpirun_executable or mpirun (string) Full path to mpirun, mpimon, dmpirun or prun executable used to launch an MPI job. If _auto, executable is determined internally. mpirun_options or mpiopt (string) Optional arguments to append to the mpirun command that is used to launch the parallel processes. When this option is set to _auto, AcuRun internally determines the options to append to the mpirun command. remote_shell or rsh (string) Remote shell executable for MPI launchers. Usually this is rsh but can be set to ssh if needed. If _auto, executable is determined internally. automount_path_remove or arm (string) Automount path remove. If automount_path_remove is set to _none, this option is ignored. automount_path_replace or arep (string) Automount path replacement. If automount_path_replace is set to _none, this option is ignored. automount_path_name or apath (string) Automount path name. If automount_path_name is set to _none, this option is ignored. lm_daemon or lmd (string) Full address of the network license manager daemon, AcuLmd, that runs on the server host. When this option is set to _auto, the value is internally changed to$ACUSIM_HOME/$ACUSIM_MACHINE/bin/acuLmd. This option is only used when lm_service_type = classical. lm_service_type or lmtype (enumerated) Type of the license manager service: hwu Altair Units licensing token Token based licensing classical Classical Acusim style licensing lm_server_host or lmhost (string) Name of the server machine on which the network license manager runs. When set to _auto, the local host name is used. This option is only used when lm_service_type = classical. lm_port or lmport (integer) TCP port number that the network license manager uses for communication. This option is only used when lm_service_type = classical. lm_license_file or lmfile (string) Full address of the license file. This file is read frequently by the network license manager. When this option is set to _auto, the value is internally changed to$ACUSIM_HOME/$ACUSIM_MACHINE/license.dat. This option is only used when lm_service_type = classical. lm_checkout or lmco (string) Full address of the license checkout co-processor, AcuLmco. This process is spawned by the solver on the local machine. When this option is set to _auto, the value is internally changed to$ACUSIM_HOME/\$ACUSIM_MACHINE/bin/acuLmco. This option is only used when lm_service_type = classical.
lm_queue_time or lmqt (integer)
The time, in seconds, to camp on the license queue before abandoning the wait. This option is only used when lm_service_type = classical.
line_buff or lbuff (boolean)
Flush standard output after each line of output.
print_environment_variables or printenv (boolean)
Prints all the environment variables in AcuRunFwh and those read by AcuFwh.
verbose or v (integer)
Set the verbose level for printing information to the screen. Each higher verbose level prints more information. If verbose is set to 0 (or less), only warning and error messages are printed. If verbose is set to 1, basic processing information is printed in addition to warning and error messages. This level is recommended. verbose levels of 2 and 3 provide useful information on the progress of the trace. Levels greater than 3 provide information useful only for debugging.

## Examples

AcuFwh relies on the definition of an FWH_OUTPUT command and one or more FWH_SURFACE_OUTPUT commands from the AcuSolve input file. The FWH_OUTPUT command defines the output properties and constants for the acoustic simulation, whereas the FWH_SURFACE_OUTPUT command defines the surfaces that are used for integration of the acoustic quantities. For example:
FWH_OUTPUT{
reference_density                   = 1.225
reference_pressure                  = 0.0
reference_sound_speed               = 340
source_output_frequency             = 1
source_output_time_interval         = 0
num_source_saved_states             = 0
}
defines the Ffowcs-Williams-Hawkings output properties, and
FWH_SURFACE_OUTPUT( "FWH_Mirror" ) {
shape                               = three_node_triangle
}

defines the FWH surface output, where FWH_Surf_Mirror.crd and FWH_Surf_Mirror.ebc are the coordinate and connectivity files corresponding to the acoustic surface. Note that the connectivity file that is used with the FWH_SURFACE_OUTPUT command is for the "partial surfaces", and hence contains only the surface element and node IDs, while the full connectivity file contains the parent volume element IDs as well. As an example, if a line in the full connectivity file of a surface contains the following:

770169 28458 0 18716 18

where the numbers represent parent element ID, surface ID, and the three node IDs, respectively, then the same line in the partial surface connectivity file contains:

28458 0 18716 18

Note that the parent element ID is not present.

The FWH data is written to disk within the working directory of the AcuSolve run as the simulation progresses. Refer to the AcuSolve Commands Reference Manual for more details on the FWH_OUTPUT and FWH_SURFACE_OUTPUT commands.

AcuFwh reads the data that is written to disk, then propagates the acoustic source signal to the far field. For example,
AcuRunFwh -np 2 -nt 2 -mp openmp -mf microphones.mic -smt 1 -nsp 1 -sn1 0,1,0 -sc 0,0,0 -ofss FWH_Mirror

processes the FWH_SURFACE_OUTPUT called "FWH_Mirror" on two processors using openMP and propagates the results to the microphone locations listed in the file microphones.mic. Additionally, the results are mirrored with respect to a plane with a reference point coordinates of 0,0,0 and a normal vector of 0,1,0.