\textbf{Models with all kinds of spatial dependencies}

The results of all the models are presented together since all the variables have different names. Only acceptation codes with sequential update strategy are included in this section.

Acceptation code for dep01 (if the update strategy is sequential):
\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    dep01 % one_dim(i) % value = dep01 % one_dim(i) % new_value
    dep01 % one_dim(i) % successful_changes = dep01 % one_dim(i) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating s01 % one_dim(spatial(i, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + dep01 % one_dim(spatial(neighbour, h + 1)) % &
                value
        END DO
        s01 % one_dim(neighbour) % value = sum_int
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for dep02 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    dep02 % two_dim(i, j) % value = dep02 % two_dim(i, j) % new_value
    dep02 % two_dim(i, j) % successful_changes = dep02 % two_dim(i, j) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating s02 % two_dim(spatial(i, k + 1), j)
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + dep02 % two_dim(spatial(neighbour, h + 1), j) &
                % value
        END DO
        s02 % two_dim(neighbour, j) % value = sum_int
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for dep03 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    dep03 % two_dim(i, j) % value = dep03 % two_dim(i, j) % new_value
    dep03 % two_dim(i, j) % successful_changes = dep03 % two_dim(i, j) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(j, 1)
        sum_int = 0
        neighbour = spatial(j, k + 1)
        ! updating s03 % two_dim(i, spatial(j, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + dep03 % two_dim(i, spatial(neighbour, h + 1)) &
                % value
        END DO
        s03 % two_dim(i, neighbour) % value = sum_int
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depsc01 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depsc01 % one_dim(i) % value = depsc01 % one_dim(i) % new_value
    depsc01 % one_dim(i) % successful_changes = depsc01 % one_dim(i) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating sc01 % one_dim(spatial(i, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depsc01 % one_dim(spatial(neighbour, h + 1)) &
                % value
        END DO
        sc01 % one_dim(neighbour) % value = sum_int
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depcc01 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depcc01 % one_dim(i) % value = depcc01 % one_dim(i) % new_value
    depcc01 % one_dim(i) % successful_changes = depcc01 % one_dim(i) % &
        successful_changes + 1
    
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Note that the value of a count variable never changes. Cases like this are not presented any more.

Acceptation code for depsc02 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depsc02 % two_dim(i, j) % value = depsc02 % two_dim(i, j) % new_value
    depsc02 % two_dim(i, j) % successful_changes = depsc02 % two_dim(i, j) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating sc02 % two_dim(spatial(i, k + 1), j)
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depsc02 % two_dim(spatial(neighbour, h + 1), &
                j) % value
        END DO
        sc02 % two_dim(neighbour, j) % value = sum_int
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depsc03 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depsc03 % two_dim(i, j) % value = depsc03 % two_dim(i, j) % new_value
    depsc03 % two_dim(i, j) % successful_changes = depsc03 % two_dim(i, j) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(j, 1)
        sum_int = 0
        neighbour = spatial(j, k + 1)
        ! updating sc03 % two_dim(i, spatial(j, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depsc03 % two_dim(i, spatial(neighbour, h + &
                1)) % value
        END DO
        sc03 % two_dim(i, neighbour) % value = sum_int
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depd01 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depd01 % one_dim(i) % value = depd01 % one_dim(i) % new_value
    depd01 % one_dim(i) % successful_changes = depd01 % one_dim(i) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating sd01 % one_dim(spatial(i, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depd01 % one_dim(spatial(neighbour, h + 1)) % &
                value
        END DO
        sd01 % one_dim(neighbour) % value = sum_int
    END DO
    DO k = 1, spatial(i, 1)
        neighbour = spatial(i, k + 1)
        avg1 % one_dim(neighbour) % value = sd01 % one_dim(neighbour) % &
            value/cd01 % one_dim(neighbour) % value
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depd02 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depd02 % two_dim(i, j) % value = depd02 % two_dim(i, j) % new_value
    depd02 % two_dim(i, j) % successful_changes = depd02 % two_dim(i, j) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating sd02 % two_dim(spatial(i, k + 1), j)
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depd02 % two_dim(spatial(neighbour, h + 1), &
                j) % value
        END DO
        sd02 % two_dim(neighbour, j) % value = sum_int
    END DO
    DO k = 1, spatial(i, 1)
        neighbour = spatial(i, k + 1)
        avg2 % two_dim(neighbour, j) % value = REAL(sd02 % two_dim(neighbour, &
            j) % value)/cd02 % two_dim(neighbour, j) % value
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depd03 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depd03 % two_dim(i, j) % value = depd03 % two_dim(i, j) % new_value
    depd03 % two_dim(i, j) % successful_changes = depd03 % two_dim(i, j) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(j, 1)
        sum_int = 0
        neighbour = spatial(j, k + 1)
        ! updating sd03 % two_dim(i, spatial(j, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depd03 % two_dim(i, spatial(neighbour, h + &
                1)) % value
        END DO
        sd03 % two_dim(i, neighbour) % value = sum_int
    END DO
    DO k = 1, spatial(j, 1)
        neighbour = spatial(j, k + 1)
        avg3 % two_dim(i, neighbour) % value = REAL(sd03 % two_dim(i, &
            neighbour) % value)/cd03 % two_dim(i, neighbour) % value
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depscc01 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depscc01 % one_dim(i) % value = depscc01 % one_dim(i) % new_value
    depscc01 % one_dim(i) % successful_changes = depscc01 % one_dim(i) % &
        successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating scc01 % one_dim(spatial(i, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depscc01 % one_dim(spatial(neighbour, h + 1)) &
                % value
        END DO
        scc01 % one_dim(neighbour) % value = sum_int
    END DO
    DO k = 1, spatial(i, 1)
        neighbour = spatial(i,  k +1)
        comb1 % one_dim(neighbour) % value = scc01 % one_dim(neighbour) % &
            value+scc02 % one_dim(neighbour) % value
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depscc02 likewise.

Acceptation code for depscc03 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depscc03 % two_dim(i, j) % value = depscc03 % two_dim(i, j) % new_value
    depscc03 % two_dim(i, j) % successful_changes = depscc03 % two_dim(i, j) &
        % successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(i, 1)
        sum_int = 0
        neighbour = spatial(i, k + 1)
        ! updating scc03 % two_dim(spatial(i, k + 1), j)
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depscc03 % two_dim(spatial(neighbour, h + 1), &
                j) % value
        END DO
        scc03 % two_dim(neighbour, j) % value = sum_int
    END DO
    DO k = 1, spatial(i, 1)
        neighbour = spatial(i,  k +1)
        comb2 % two_dim(neighbour, j) % value = scc03 % two_dim(neighbour, j) &
            % value+scc04 % two_dim(neighbour, j) % value
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depscc04 likewise.

Acceptation code for depscc05 (if the update strategy is sequential):

\begin{verbatim}
IF (p_acc > prob(prob_index)) THEN
    depscc05 % two_dim(i, j) % value = depscc05 % two_dim(i, j) % new_value
    depscc05 % two_dim(i, j) % successful_changes = depscc05 % two_dim(i, j) &
        % successful_changes + 1
    
    ! 1 to number of neighbours
    DO k = 1, spatial(j, 1)
        sum_int = 0
        neighbour = spatial(j, k + 1)
        ! updating scc05 % two_dim(i, spatial(j, k + 1))
        DO h = 1, spatial(neighbour, 1)
            sum_int = sum_int + depscc05 % two_dim(i, spatial(neighbour, h + &
                1)) % value
        END DO
        scc05 % two_dim(i, neighbour) % value = sum_int
    END DO
    DO k = 1, spatial(j, 1)
        neighbour = spatial(j,  k +1)
        comb3 % two_dim(i, neighbour) % value = scc05 % two_dim(i, neighbour) &
            % value+scc06 % two_dim(i, neighbour) % value
    END DO
END IF
prob_index = prob_index + 1
IF (prob_index > SIZE(prob) .OR. prob_index < 1) THEN
    CALL G05FAF(0.0_dp, 1.0_dp, SIZE(prob), prob)
    prob_index = 1
END IF
\end{verbatim}

Acceptation code for depscc06 likewise.