From f50bab36a5579f264b8367054f5d92fb5a1dee15 Mon Sep 17 00:00:00 2001
From: Albert de Montserrat
 <58044444+albert-de-montserrat@users.noreply.github.com>
Date: Mon, 6 May 2024 15:20:41 +0200
Subject: [PATCH] Update 3D.jl

---
 src/ext/AMDGPU/3D.jl | 40 ++++++++++++++++++++++++++++++++++++++--
 1 file changed, 38 insertions(+), 2 deletions(-)

diff --git a/src/ext/AMDGPU/3D.jl b/src/ext/AMDGPU/3D.jl
index 472905e1..acf39f5a 100644
--- a/src/ext/AMDGPU/3D.jl
+++ b/src/ext/AMDGPU/3D.jl
@@ -92,14 +92,14 @@ function thermal_bcs!(::CUDABackendTrait, thermal::JustRelax.ThermalArrays, bcs)
 end
 
 # Phases
-function JR3D.phase_ratios_center(
+function JR3D.phase_ratios_center!(
     ::CUDABackendTrait,
     phase_ratios::JustRelax.PhaseRatio,
     particles,
     grid::Geometry,
     phases,
 )
-    return _phase_ratios_center(phase_ratios, particles, grid, phases)
+    return _phase_ratios_center!(phase_ratios, particles, grid, phases)
 end
 
 # Rheology
@@ -183,4 +183,40 @@ function JR3D.compute_dt(::CUDABackendTrait, S::JustRelax.StokesArrays, args...)
     return _compute_dt(S, args...)
 end
 
+function JR3D.subgrid_characteristic_time!(
+    subgrid_arrays,
+    particles,
+    dt₀::RocArray,
+    phases::JustRelax.PhaseRatio,
+    rheology,
+    thermal::JustRelax.ThermalArrays,
+    stokes::JustRelax.StokesArrays,
+    xci,
+    di,
+)
+    ni = size(stokes.P)
+    @parallel (@idx ni) subgrid_characteristic_time!(
+        dt₀, phases.center, rheology, thermal.Tc, stokes.P, di
+    )
+    return nothing
+end
+
+function JR3D.subgrid_characteristic_time!(
+    subgrid_arrays,
+    particles,
+    dt₀::RocArray,
+    phases::AbstractArray{Int,N},
+    rheology,
+    thermal::JustRelax.ThermalArrays,
+    stokes::JustRelax.StokesArrays,
+    xci,
+    di,
+) where {N}
+    ni = size(stokes.P)
+    @parallel (@idx ni) subgrid_characteristic_time!(
+        dt₀, phases, rheology, thermal.Tc, stokes.P, di
+    )
+    return nothing
+end
+
 end