ceed-vector.c (ff90b007c3dd968e763cc6a82bde1e90c117acbc) ceed-vector.c (b1a610ef203ae2e2bf8a9bddcc192eaf0a166984)
1// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and other CEED contributors.
2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6// This file is part of CEED: http://github.com/ceed
7
8#include <ceed-impl.h>

--- 353 unchanged lines hidden (view full) ---

362 @param[in] step Stride between indices to set
363 @param[in] value Value to be used
364
365 @return An error code: 0 - success, otherwise - failure
366
367 @ref User
368**/
369int CeedVectorSetValueStrided(CeedVector vec, CeedSize start, CeedSize stop, CeedSize step, CeedScalar value) {
1// Copyright (c) 2017-2025, Lawrence Livermore National Security, LLC and other CEED contributors.
2// All Rights Reserved. See the top-level LICENSE and NOTICE files for details.
3//
4// SPDX-License-Identifier: BSD-2-Clause
5//
6// This file is part of CEED: http://github.com/ceed
7
8#include <ceed-impl.h>

--- 353 unchanged lines hidden (view full) ---

362 @param[in] step Stride between indices to set
363 @param[in] value Value to be used
364
365 @return An error code: 0 - success, otherwise - failure
366
367 @ref User
368**/
369int CeedVectorSetValueStrided(CeedVector vec, CeedSize start, CeedSize stop, CeedSize step, CeedScalar value) {
370 CeedSize length;
371
370 CeedCheck(vec->state % 2 == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS,
371 "Cannot grant CeedVector array access, the access lock is already in use");
372 CeedCheck(vec->num_readers == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Cannot grant CeedVector array access, a process has read access");
372 CeedCheck(vec->state % 2 == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS,
373 "Cannot grant CeedVector array access, the access lock is already in use");
374 CeedCheck(vec->num_readers == 0, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Cannot grant CeedVector array access, a process has read access");
375 CeedCall(CeedVectorGetLength(vec, &length));
376 CeedCheck(stop >= -1 && stop <= length, CeedVectorReturnCeed(vec), CEED_ERROR_ACCESS, "Invalid value for stop, must be in the range [-1, length]");
373
374 if (vec->SetValueStrided) {
375 CeedCall(vec->SetValueStrided(vec, start, stop, step, value));
376 vec->state += 2;
377 } else {
377
378 if (vec->SetValueStrided) {
379 CeedCall(vec->SetValueStrided(vec, start, stop, step, value));
380 vec->state += 2;
381 } else {
378 CeedSize length;
379 CeedScalar *array;
380
382 CeedScalar *array;
383
381 CeedCall(CeedVectorGetLength(vec, &length));
382 if (length <= 0) return CEED_ERROR_SUCCESS;
383 if (stop == -1) stop = length;
384 CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array));
385 for (CeedSize i = start; i < stop; i += step) array[i] = value;
386 CeedCall(CeedVectorRestoreArray(vec, &array));
387 }
388 return CEED_ERROR_SUCCESS;
389}

--- 723 unchanged lines hidden ---
384 if (length <= 0) return CEED_ERROR_SUCCESS;
385 if (stop == -1) stop = length;
386 CeedCall(CeedVectorGetArray(vec, CEED_MEM_HOST, &array));
387 for (CeedSize i = start; i < stop; i += step) array[i] = value;
388 CeedCall(CeedVectorRestoreArray(vec, &array));
389 }
390 return CEED_ERROR_SUCCESS;
391}

--- 723 unchanged lines hidden ---