Read the output configuration from a Lua script.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(hvs_output_config_type), | intent(out) | :: | me |
The output configuration settings to fill. |
||
type(flu_State) | :: | conf |
Handle of the Lua script to load the configuration from. |
|||
integer, | intent(in), | optional | :: | parent |
Table handle to the table providing the output settings. |
|
logical, | intent(in) | :: | isReduce |
true if reduction is defined |
subroutine hvs_output_load(me, conf, parent, isReduce) ! --------------------------------------------------------------------------! !> The output configuration settings to fill. type(hvs_output_config_type), intent(out) :: me !> Handle of the Lua script to load the configuration from. type(flu_state) :: conf !> Table handle to the table providing the output settings. integer, intent(in), optional :: parent !> true if reduction is defined logical, intent(in) :: isReduce ! ----------------------------------------------------------------------! character(len=labelLen) :: vkind integer :: thandle integer :: iError ! ----------------------------------------------------------------------! write(logUnit(3), *) ' Loading output table ...' call aot_table_open( L = conf, & & parent = parent, & & thandle = thandle, & & key = 'output' ) if (thandle > 0) then ! If reduction is active set output%vis_kind to hvs_asciiTransient ! else load vis_kind from output table if (isReduce) then write(logUnit(7),*) 'Spatial reduction is active, set output format to ascii' vkind = 'ascii' else call aot_get_val( L = conf, & & thandle = thandle, & & key = 'format', & & val = vkind, & & ErrCode = iError ) if ( btest(iError, aoterr_Fatal) ) then write(logUnit(0),*) 'Fatal Error: In reading format for output' if ( btest(iError, aoterr_NonExistent) ) then write(logUnit(0),*) 'NonExistent: No format for output provided.' end if if( btest(iError, aoterr_WrongType) ) then write(logUnit(0),*) 'WrongType: No format for output provided.' end if write(logUnit(0),*) 'STOPPING' call tem_abort() end if end if vkind = adjustl(vkind) vkind = upper_to_lower(vkind) select case(trim(vkind)) case('vtk') ! Output data in paraview unstructured vtk format (.vtu) me%vis_kind = hvs_VTK call hvs_vtk_config_load( me = me%vtk, & & conf = conf, & & thandle = thandle ) case('ascii') me%vis_kind = hvs_AsciiTransient case('asciispatial') ! write an ascii file for each time step and write all three barycenters ! each line has corrdinates and variables of only ONE element ! # coordX coordY coordZ var1 var2 var3 me%vis_kind = hvs_AsciiSpatial case('harvester') ! ... in the harvester format, meaning ! there is a mesh in treelm format and corresponding to it ! there are restart files which hold the state information for the ! elements in the mesh for the requested time step me%vis_kind = hvs_Internal case('precice') ! ... for preCICE ! there is a mesh in treelm format and corresponding to it ! there are restart files which hold the state information for the ! elements in the mesh for the requested time step me%vis_kind = hvs_PreciceSpatial case default write(logunit(0),*) 'ERROR in hvs_output_load: ' & & // 'unknown visualization kind ' & & // trim(vkind) write(logunit(0),*) 'format has to be one of:' write(logunit(0),*) '* vtk' write(logunit(0),*) '* ascii' write(logunit(0),*) '* asciiSpatial' write(logunit(0),*) '* harvester' write(logunit(0),*) '* precice' write(logunit(0),*) call tem_abort() end select else write(logUnit(0),*) 'FATAL Error: output table is not defined.' write(logunit(0),*) 'Please provide an output table with at least the' write(logunit(0),*) 'format defined in it!' write(logUnit(0),*) 'STOPPING' call tem_abort() end if write(logUnit(5),*) ' Output format: '//trim(vkind) ! To decide whether to use get_point or get_element call aot_get_val( L = conf, & & thandle = thandle, & & val = me%useGetPoint, & & ErrCode = iError, & & default = .false., & & key = 'use_get_point' ) write(logUnit(7),*) ' Use get_point: ', me%useGetPoint ! Get the number of Dofs to be written in the output ! The default is set to -1. If the dofs are not specified, ! all the dofs should be dumped call aot_get_val( L = conf, & & thandle = thandle, & & val = me%nDofs, & & ErrCode = iError, & & default = -1, & & key = 'ndofs' ) call aot_table_close( L = conf, & & thandle = thandle ) end subroutine hvs_output_load