Hi John,

I assume you mean "opt" mode, otherwise that doesn't make sense because the
> error you are referring to above is an assert, which is only active in
> debug mode.


Yes, this doesn't make sense to me either. I'm running in "opt" mode, but
this assert still gets triggered.

I have pasted a very simple code below which causes the assert fail on my
machine. Could you please check if it fails for you too?

#include "libmesh.h"
#include "petsc_vector.h"

using namespace libMesh;

int main(int argc, char* argv[])
{
  LibMeshInit libmesh_init(argc, argv);
  Parallel::Communicator comm;
  libmesh_init.comm().duplicate(comm);
  int num_procs = comm.size();
  int rank = comm.rank();

  unsigned int N = 60;
  unsigned int n = 60/num_procs;
  std::vector<unsigned int> send_list(2);

  if(num_procs != 1)
  {
    if(rank != 0)
      send_list[0] = rank*n-1;
    else
      send_list[0] = n+2;

    if(rank != num_procs - 1)
      send_list[1] = (rank+1)*n+1;
    else
      send_list[1] = rank*n-2;
  }
  else
  {
    send_list[0] = 0;
    send_list[1] = N-1;
  }


  PetscVector<double> parallel(comm, N, n, PARALLEL);
  PetscVector<double> *ghosted = NULL;

  if(num_procs != 1)
    ghosted = new PetscVector<double>(comm, N, n+2, send_list, GHOSTED);
  else
    ghosted = new PetscVector<double>(comm, N, n, send_list, GHOSTED);

  parallel.localize(*ghosted, send_list);

  double a = (*ghosted)(send_list[0]);
  double b = (*ghosted)(send_list[1]);

  delete ghosted;
}

Thanks!
Harshad

On Tue, Mar 8, 2016 at 2:07 PM, John Peterson <jwpeter...@gmail.com> wrote:

>
>
> On Tue, Mar 8, 2016 at 11:35 AM, Harshad Sahasrabudhe <hsaha...@purdue.edu
> > wrote:
>
>> Hi,
>>
>> I'm running into a problem with ghost vectors created with PetscVector in
>> LibMesh 0.9.5 PETSc 3.5.4. When I call the operator(), the call fails at
>> the assert local_index < _local_size (petsc_vector.h:1214). The
>> _local_size
>> variable in PetscVector is 0 (after _get_array is called) even if the
>> *ghost
>> *indices vector is non-zero while creating the vector using the
>> constructor:
>>
>> PetscVector (const Parallel::Communicator &comm_in, const
>> numeric_index_type N, const numeric_index_type n_local, const std::vector<
>> numeric_index_type > &*ghost*, const ParallelType type=AUTOMATIC)
>>
>> I checked that the ghost indices are out of the scope of first_local_dof
>> and last_local_dof in DofMap. I am localizing the vector using the
>> function
>>
>> system->solution->localize(ghost_vector, ghost_indices)
>>
>> I don't get any error when I run in debug mode.
>
>
> I assume you mean "opt" mode, otherwise that doesn't make sense because
> the error you are referring to above is an assert, which is only active in
> debug mode.
>
>
>> Could this be a compilation
>> issue? I have no clue what this could be. Any help is appreciated!
>>
>
> I think it's more likely that your application code is doing something
> incorrectly...
>
> --
> John
>
------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://makebettercode.com/inteldaal-eval
_______________________________________________
Libmesh-users mailing list
Libmesh-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to