aboutsummaryrefslogtreecommitdiff
path: root/CarpetExtra/AMRToy/src/set_level_mask.F90
diff options
context:
space:
mode:
Diffstat (limited to 'CarpetExtra/AMRToy/src/set_level_mask.F90')
-rw-r--r--CarpetExtra/AMRToy/src/set_level_mask.F9035
1 files changed, 35 insertions, 0 deletions
diff --git a/CarpetExtra/AMRToy/src/set_level_mask.F90 b/CarpetExtra/AMRToy/src/set_level_mask.F90
new file mode 100644
index 000000000..0a7483097
--- /dev/null
+++ b/CarpetExtra/AMRToy/src/set_level_mask.F90
@@ -0,0 +1,35 @@
+#include "cctk.h"
+#include "cctk_Arguments.h"
+#include "cctk_Functions.h"
+#include "cctk_Parameters.h"
+
+subroutine AMR_set_level_mask (CCTK_ARGUMENTS)
+ implicit none
+ DECLARE_CCTK_ARGUMENTS
+ DECLARE_CCTK_FUNCTIONS
+ DECLARE_CCTK_PARAMETERS
+
+!!$ character*1000 :: msg
+!!$
+!!$ write (msg, '("Origin: ",3g25.15)') CCTK_ORIGIN_SPACE(:)
+!!$ call CCTK_INFO (msg)
+!!$ write (msg, '("Delta: ",3g25.15)') CCTK_DELTA_SPACE(:)
+!!$ call CCTK_INFO (msg)
+
+ if (any(level_mask<0 .or. level_mask>100)) then
+ call CCTK_WARN(CCTK_WARN_ABORT, "level mask contains strange values")
+ end if
+
+ if (CCTK_EQUALS(radius_type, "diamond")) then
+ ! L_1 norm
+ level_mask = max_radius / max(abs(x)+abs(y)+abs(z), min_radius)
+ else if (CCTK_EQUALS(radius_type, "sphere")) then
+ ! L_2 norm
+ level_mask = max_radius / max(r, min_radius)
+ else if (CCTK_EQUALS(radius_type, "box")) then
+ ! L_inf norm
+ level_mask = max_radius / max(max(abs(x),abs(y),abs(z)), min_radius)
+ else
+ call CCTK_WARN(CCTK_WARN_ABORT, "internal error")
+ end if
+end subroutine AMR_set_level_mask