tem_mesh_out Subroutine

public subroutine tem_mesh_out(me, conf)

write mesh information into lua file.

This routine is specially need for write restart to write mesh info for predefined mesh such that read restart will generate predefined mesh

Arguments

Type IntentOptional Attributes Name
type(tem_global_type), intent(in) :: me

Structure to store header in

type(aot_out_type), intent(inout) :: conf

aotus lua state to write output


Source Code

  subroutine tem_mesh_out( me, conf )
    ! -------------------------------------------------------------------- !
    !> Structure to store header in
    type(tem_global_type), intent(in) :: me
    !> aotus lua state to write output
    type(aot_out_type), intent(inout) :: conf
    ! -------------------------------------------------------------------- !
    real(kind=rk) :: lineLength
    ! -------------------------------------------------------------------- !

    select case(trim(me%predefined))
      case('cube','slice','line')
        call aot_out_open_table(conf, 'mesh')

        call aot_out_val( put_conf = conf,                &
          &               val      = trim(me%predefined), &
          &               vname    = 'predefined'         )
        call aot_out_val( put_conf = conf,      &
          &               val      = me%Origin, &
          &               vname    = 'origin'   )
        if (me%nElems < 2**me%maxlevel) then
          lineLength = me%BoundingCubeLength*0.5_rk**me%maxLevel*me%nElems
          call aot_out_val( put_conf = conf,       &
            &               val      = lineLength, &
            &               vname    = 'length'    )
          call aot_out_val( put_conf = conf,           &
            &               val      = me%nElems,      &
            &               vname    = 'element_count' )
        else
          call aot_out_val( put_conf = conf,                  &
            &               val      = me%BoundingCubeLength, &
            &               vname    = 'length'               )
          call aot_out_val( put_conf = conf,             &
            &               val      = me%maxLevel,      &
            &               vname    = 'refinementLevel' )
        end if

        call aot_out_close_table(conf)

      case('line_bounded')
        lineLength = me%BoundingCubeLength*0.5_rk**me%maxLevel*me%nElems
        call aot_out_open_table(conf, 'mesh')

        call aot_out_val( put_conf = conf,                &
          &               val      = trim(me%predefined), &
          &               vname    = 'predefined'         )
        call aot_out_val( put_conf = conf,      &
          &               val      = me%Origin, &
          &               vname    = 'origin'   )
        call aot_out_val( put_conf = conf,       &
          &               val      = lineLength, &
          &               vname    = 'length'    )
        call aot_out_val( put_conf = conf,           &
          &               val      = me%nElems,      &
          &               vname    = 'element_count' )

        call aot_out_close_table(conf)

      case('single')
        call aot_out_open_table(conf, 'mesh')

        call aot_out_val( put_conf = conf,                &
          &               val      = trim(me%predefined), &
          &               vname    = 'predefined'         )
        call aot_out_val( put_conf = conf,      &
          &               val      = me%Origin, &
          &               vname    = 'origin'   )
        call aot_out_val( put_conf = conf,                  &
          &               val      = me%BoundingCubeLength, &
          &               vname    = 'length'               )
        call aot_out_close_table(conf)

      case default
        call aot_out_val( put_conf = conf,             &
          &               val      = trim(me%dirName), &
          &               vname    = 'mesh'            )

    end select

  end subroutine tem_mesh_out