where applies an array assignment only where a logical mask is true.

Program

Play the program to change the threshold and watch only matching elements double.

where_mask.f90
program where_mask_demo
    implicit none
    integer :: values(4)
    integer :: limit

    values = [3, 5, 7, 10]
    limit = 
    where (values >= limit)
        values = values * 2
    end where
    print '(I0, A, I0, A, I0, A, I0)', values(1), " ", values(2), " ", values(3), " ", values(4)
end program where_mask_demo
program where_mask_demo
    implicit none
    integer :: values(4)
    integer :: limit

    values = [3, 5, 7, 10]
    limit = 
    where (values >= limit)
        values = values * 2
    end where
    print '(I0, A, I0, A, I0, A, I0)', values(1), " ", values(2), " ", values(3), " ", values(4)
end program where_mask_demo
program where_mask_demo
    implicit none
    integer :: values(4)
    integer :: limit

    values = [3, 5, 7, 10]
    limit = 
    where (values >= limit)
        values = values * 2
    end where
    print '(I0, A, I0, A, I0, A, I0)', values(1), " ", values(2), " ", values(3), " ", values(4)
end program where_mask_demo
where `where (mask)` guards an array assignment element by element.
mask `values >= limit` builds a logical array from a comparison.
unchanged elements Elements where the mask is false keep their previous value.