bc_data_init Subroutine

public subroutine bc_data_init()

Uses

  • proc~~bc_data_init~~UsesGraph proc~bc_data_init bc_data_init module~mod_comm_lib mod_comm_lib proc~bc_data_init->module~mod_comm_lib module~mod_global_parameters mod_global_parameters proc~bc_data_init->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Arguments

None

Calls

proc~~bc_data_init~~CallsGraph proc~bc_data_init bc_data_init proc~bc_read_params bc_read_params proc~bc_data_init->proc~bc_read_params proc~lt2_create_from_data LT2_create_from_data proc~bc_data_init->proc~lt2_create_from_data proc~lt3_create_from_data LT3_create_from_data proc~bc_data_init->proc~lt3_create_from_data proc~read_vtk_structured_points~2 read_vtk_structured_points proc~bc_data_init->proc~read_vtk_structured_points~2

Called by

proc~~bc_data_init~~CalledByGraph proc~bc_data_init bc_data_init proc~initialize_amrvac initialize_amrvac proc~initialize_amrvac->proc~bc_data_init proc~main main proc~main->proc~initialize_amrvac program~agile agile program~agile->proc~main

Source Code

  subroutine bc_data_init()
    use mod_global_parameters
    use mod_comm_lib, only: mpistop

    integer                :: i, iw, ib, n_files, n_bc
    double precision       :: xmax(3)
    type(bc_data_t)        :: bc

    call bc_read_params(par_files)

    allocate(bc_data_ix(nwfluxbc, 2*ndim))

    bc_data_ix(:, :) = -1
    n_bc             = 0

    if(any(typeboundary(1:nwfluxbc,1:2*ndim)==bc_data ) .or. &
       any(typeboundary(1:nwfluxbc,1:2*ndim)==bc_icarus)) then
      call read_vtk_structured_points(trim(boundary_data_file_name), bc)
      xmax = bc%origin + (bc%n_points-1) * bc%dx
      bc_data_time_varying = (bc%n_points(ndim) > 1)

    endif

    do ib = 1, 2 * ndim
       do iw = 1, nwfluxbc
          if (typeboundary(iw, ib)==bc_data .or. typeboundary(iw,&
              ib)==bc_icarus) then
             n_bc               = n_bc + 1
             bc_data_ix(iw, ib) = n_bc


             
             
             
             if (bc_data_time_varying) then
                lt_3d(n_bc) = LT3_create_from_data(bc%origin(1:ndim),&
                    xmax(1:ndim), bc%values(:, :, :, n_bc:n_bc))
             else
                ! Use first point in time
                lt_2d(n_bc) = LT2_create_from_data(bc%origin(1:ndim-1),&
                    xmax(1:ndim-1), bc%values(:, :, 1:1, n_bc))
             end if
            
          end if
       end do
    end do

  end subroutine bc_data_init