From 43a584c7cb0e990fdd05e34cf319c2d31d9c17c2 Mon Sep 17 00:00:00 2001 From: diener Date: Mon, 1 Sep 2003 12:28:06 +0000 Subject: Major changes to clean up and comment the code. git-svn-id: http://svn.einsteintoolkit.org/cactus/EinsteinAnalysis/EHFinder/trunk@130 2a26948c-0e4f-0410-aee8-f1d3e353619c --- interface.ccl | 21 ++-- param.ccl | 61 +++------ schedule.ccl | 396 +++++++++++++--------------------------------------------- 3 files changed, 119 insertions(+), 359 deletions(-) diff --git a/interface.ccl b/interface.ccl index fd1f3b7..a0998f5 100644 --- a/interface.ccl +++ b/interface.ccl @@ -5,7 +5,6 @@ implements: ehfinder inherits: grid admbase coordgauge staticconformal spacemask boundary USES INCLUDE: Boundary.h -#USES INCLUDE: MoL.h CCTK_INT FUNCTION MoLRegisterEvolved(CCTK_INT IN EvolvedIndex, \ CCTK_INT IN RHSIndex) @@ -35,13 +34,13 @@ CCTK_REAL dfz[eh_number_level_sets] TYPE=GF TIMELEVELS=1 # Squares of the derivatives of the level set functions. CCTK_REAL dfsq[eh_number_level_sets] TYPE=GF TIMELEVELS=1 -# Temporary variables used in pde re-parametrization. +# Temporary variables used in pde re-initialization. CCTK_REAL ftmp[eh_number_level_sets] TYPE=GF TIMELEVELS=1 -# Temporary variables for the right hand side used in pde re-parametrization. +# Temporary variables for the right hand side used in pde re-initialization. CCTK_REAL sftmp[eh_number_level_sets] TYPE=GF TIMELEVELS=1 -# Temporary placeholder for the level set during re-parametrization. +# Temporary placeholder for the level set during re-initialization. CCTK_REAL fbak[eh_number_level_sets] TYPE=GF TIMELEVELS=1 # Masks to define active cells. @@ -50,19 +49,19 @@ CCTK_INT eh_mask[eh_number_level_sets] TYPE=GF TIMELEVELS=1 # Temporary masks to define active cells. CCTK_INT tm_mask[eh_number_level_sets] TYPE=GF TIMELEVELS=1 -# Temporary placeholders for the masks during re-parametrization. +# Temporary placeholders for the masks during re-initialization. CCTK_INT eh_mask_bak[eh_number_level_sets] TYPE=GF TIMELEVELS=1 -#CCTK_INT rep_mask[eh_number_level_sets] TYPE=GF TIMELEVELS=1 - -CCTK_INT re_param_control_pde TYPE=SCALAR -CCTK_INT re_param_control_approx TYPE=SCALAR +# Control variable for while loops in re-initialization. +CCTK_INT re_init_control TYPE=SCALAR +# Grid function used in counting surfaces. CCTK_INT surface_index TYPE=GF TIMELEVELS=1 { sc } +# Flag to indicate succesful location of points on a surface. CCTK_INT find_surface_status TYPE=SCALAR CCTK_INT levelset_integers TYPE=SCALAR @@ -116,9 +115,7 @@ CCTK_REAL interp_metric_arrays TYPE=ARRAY DIM=2 TIMELEVELS=1 SIZE=ntheta,nphi GH CCTK_REAL integrate_tmp_array TYPE=ARRAY DIM=2 TIMELEVELS=1 SIZE=ntheta,nphi GHOSTSIZE=n_array_ghosts,n_array_ghosts DISTRIB=DEFAULT { int_tmp -} - -#CCTK_INT rep_mask TYPE=GF TIMELEVELS=1 +} "Temporary array that is used in the integration of various quantities" # Storage for the event horizon areas. This is used to trigger output. CCTK_REAL eh_area[eh_number_level_sets] TYPE=ARRAY DIM=1 TIMELEVELS=1 SIZE=maximum_surface_number GHOSTSIZE=0 DISTRIB=DEFAULT diff --git a/param.ccl b/param.ccl index 530cb71..b592acf 100644 --- a/param.ccl +++ b/param.ccl @@ -12,19 +12,19 @@ KEYWORD eh_metric_type "Do we use numerical or analytic metric information" { "numerical" :: "Read in metric from numerical data" "analytic" :: "Use external analytic metric" -} "analytic" +} "numerical" KEYWORD eh_lapse_type "Do we use numerical or analytic metric information" { "numerical" :: "Read in metric from numerical data" "analytic" :: "Use external analytic metric" -} "analytic" +} "numerical" KEYWORD eh_shift_type "Do we use numerical or analytic metric information" { "numerical" :: "Read in metric from numerical data" "analytic" :: "Use external analytic metric" -} "analytic" +} "numerical" BOOLEAN read_conformal_factor_once "Should the conformal factor only be read once" { @@ -42,57 +42,57 @@ REAL initial_rad[10] "Initial radius of surface" 0.0: :: "Positive please" } 1.0 -REAL initial_a "Initial a coefficient of ellipsoid" +REAL initial_a[10] "Initial a coefficient of ellipsoid" { 0.0: :: "Positive please" } 1.0 -REAL initial_b "Initial b coefficient of ellipsoid" +REAL initial_b[10] "Initial b coefficient of ellipsoid" { 0.0: :: "Positive please" } 1.0 -REAL initial_c "Initial c coefficient of ellipsoid" +REAL initial_c[10] "Initial c coefficient of ellipsoid" { 0.0: :: "Positive please" } 1.0 -REAL rotation_alpha "Rotation angle around z-axis of ellipsoid" +REAL rotation_alpha[10] "Rotation angle around z-axis of ellipsoid" { *:* :: "Everything is possible" } 0.0 -REAL rotation_beta "Rotation angle around y-axis of ellipsoid" +REAL rotation_beta[10] "Rotation angle around y-axis of ellipsoid" { *:* :: "Everything is possible" } 0.0 -REAL rotation_gamma "Rotation angle around x-axis of ellipsoid" +REAL rotation_gamma[10] "Rotation angle around x-axis of ellipsoid" { *:* :: "Everything is possible" } 0.0 -REAL translate_x "Translation in x-direction" +REAL translate_x[10] "Translation in x-direction" { *:* :: "Everything is possible" } 0.0 -REAL translate_y "Translation in y-direction" +REAL translate_y[10] "Translation in y-direction" { *:* :: "Everything is possible" } 0.0 -REAL translate_z "Translation in z-direction" +REAL translate_z[10] "Translation in z-direction" { *:* :: "Everything is possible" } 0.0 -REAL cas_a "Initial a coefficient of ovaloid of cassini" +REAL cas_a[10] "Initial a coefficient of ovaloid of cassini" { : :: "Any number (negative and positive are equivalent)" } 2.0 -REAL cas_b "Initial b coefficient of ovaloid of cassini" +REAL cas_b[10] "Initial b coefficient of ovaloid of cassini" { : :: "Any number (negative and positive are equivalent)" } 2.05 @@ -110,18 +110,9 @@ BOOLEAN use_outer_excision "Should outer excision be used?" { } "yes" -BOOLEAN normalize "normalize the derivatives of the level set function" -{ -} "no" - -BOOLEAN one_sided "Use one sided differences everywhere" -{ -} "no" - KEYWORD mode "Mode of operation" { "normal" :: "Find event horizons" - "test_reparam" :: "Test reparametrization routines with MoL" "analysis" :: "Provide storage for f without evolving" "generator" :: "Provide storage for f and initialize without evolving" } "normal" @@ -139,43 +130,31 @@ KEYWORD surface_direction "Should we track outward or inward moving surfaces" "inward" :: "Track inward moving surfaces." } "outward" -BOOLEAN reparam_undo "Should re-parametrization be undone at pinch-off" +BOOLEAN re_init_undo "Should re-initialization be undone at pinch-off" { } "no" -KEYWORD re_param_method "Integration method in re-parametrization" -{ - "approx" :: "Approximate re-parametrization scheme" - "pde" :: "Re-parametrize by solving an pde" - "mixed" :: "Use both schemes interchangably" -} "pde" - -KEYWORD re_param_int_method "Integration method in pde re-parametrization" +KEYWORD re_init_int_method "Integration method used in re-initialization" { "euler" :: "Standard euler scheme" "rk2" :: "Second order Runge-Kutta scheme" } "euler" -INT re_param_max_iter "maximum number of iteration in the re-parametrization" +INT re_init_max_iter "maximum number of iterations in the re-initialization" { 0: :: "Positive please" } 800 -KEYWORD pde_differences "Type of finite diffencing used in pde re-parametrization" +KEYWORD pde_differences "Type of finite diffencing used in pde re-initialization" { "centered" :: "Use 2nd order centered differences except at the boundaries" "upwind" :: "Use 1st order upwinded differences everywhere" "upwind2" :: "Use 2nd order upwinded differences everywhere" } "upwind2" -INT reparametrize_every_pde "Re-parametrize every using pde method" -{ -0: :: "If 0 don't re-parametrize using pde method" -} 100 - -INT reparametrize_every_approx "Re-parametrize every using approx method" +INT re_initialize_every "How often to re-initialize the level set function" { -0: :: "If 0 don't re-parametrize using approx method" +0: :: "If 0 don't re-initialize" } 10 INT last_iteration_number "The starting iteration number for the EH_Finder (last iteration number of the simulation)" diff --git a/schedule.ccl b/schedule.ccl index 71e6ece..ab8b651 100644 --- a/schedule.ccl +++ b/schedule.ccl @@ -284,11 +284,6 @@ if (use_mask) } "Read in excision mask from file" } -#schedule EHFinder_ReadData at CCTK_PRESTEP -#{ -# LANG: Fortran -#} "Read in metric, lapse and shift and conformal factor" - # Register the level_set function and its right hand side source with MoL schedule EHFinder_MoLRegister in MoL_Register @@ -360,42 +355,38 @@ if (CCTK_Equals(mode,"normal")) } "Apply symmetry boundaries" -# Set up the schedule group for re-parametrization + # Set up the schedule group for re-initialization -schedule GROUP EHFinder_ReParametrize at CCTK_POSTSTEP -{ - STORAGE: sftmp - STORAGE: fbak - STORAGE: eh_mask_bak - STORAGE: re_param_control_pde -} "Re-parametrize the level set function" + schedule GROUP EHFinder_ReInitialize at CCTK_POSTSTEP + { + STORAGE: sftmp + STORAGE: fbak + STORAGE: eh_mask_bak + STORAGE: re_init_control + } "Re-initialize the level set function" -if (CCTK_Equals(re_param_method,"pde") || CCTK_Equals(re_param_method,"approx") || CCTK_Equals(re_param_method,"mixed")) -{ - # Schedule the control routine, that initialises re_param_control_approx - # and re_param_control_pde if it is time for re-parametrization + # Schedule the control routine, that initialises re_init_control if it + # is time for re-initialization. - schedule EHFinder_ReParametrizeControl in EHFinder_ReParametrize + schedule EHFinder_ReInitializeControl in EHFinder_ReInitialize { LANG: Fortran - } "Initializes the re-parametrization control" -} + } "Initializes the re-initialization control" -if (CCTK_Equals(re_param_method,"pde") || CCTK_Equals(re_param_method,"mixed")) -{ - if (CCTK_Equals(re_param_int_method,"euler")) + + if (CCTK_Equals(re_init_int_method,"euler")) { - # Set up the schedule group for euler re-parametrization using - # re_param_control_pde to control the exit from the while loop. + # Set up the schedule group for euler re-initialization using + # re_init_control to control the exit from the while loop. - schedule GROUP Euler_ReParametrize in EHFinder_ReParametrize AFTER EHFinder_ReParametrizeControl WHILE ehfinder::re_param_control_pde + schedule GROUP Euler_ReInitialize in EHFinder_ReInitialize AFTER EHFinder_ReInitializeControl WHILE ehfinder::re_init_control { - } "Schedule group for Euler re-parametrization" + } "Schedule group for Euler re-initialization" # Schedule the routine that does one Euler step - schedule EHFinder_ReParametrizeEuler in Euler_ReParametrize + schedule EHFinder_ReInitializeEuler in Euler_ReInitialize { LANG: Fortran STORAGE: dfx @@ -405,109 +396,73 @@ if (CCTK_Equals(re_param_method,"pde") || CCTK_Equals(re_param_method,"mixed")) SYNC: f } "Euler scheme" - # Then synchronize the level set and apply symmetry boundary conditions. + # Then synchronize the level set and apply symmetry boundary conditions. - schedule EHFinder_ApplySymF in Euler_ReParametrize after EHFinder_ReParametrizeEuler + schedule EHFinder_ApplySymF in Euler_ReInitialize after EHFinder_ReInitializeEuler { LANG: Fortran SYNC: f } "Apply symmetry boundaries and sync" - - schedule EHFinder_ReParametrize_Check in EHFinder_ReParametrize AFTER Euler_ReParametrize + + schedule EHFinder_ReInitialize_Check in EHFinder_ReInitialize AFTER Euler_ReInitialize { LANG: Fortran - } "Check to see if re-parametrization has to be undone" + } "Check to see if re-initialization has to be undone" } -# -# if (CCTK_Equals(re_param_int_method,"rk2")) -# { -# -# # Set up the schedule group for rk2 re-parametrization using -# # re_param_control_pde to control the exit from the while loop. -# -# schedule GROUP RK2_ReParametrize in EHFinder_ReParametrize AFTER EHFinder_ReParametrize1 WHILE ehfinder::re_param_control_pde -# { -# } "Schedule group for RK2 re-parametrization" -# -# # Schedule the routine that does the first RK2 step -# -# schedule EHFinder_ReParametrizeRK2_1 in RK2_ReParametrize -# { -# LANG: Fortran -# } "RK2 scheme step 1" -# -# # Then synchronize the level set and apply symmetry boundary conditions. -# -# schedule EHFinder_ApplySymF AS Sym_RK2_1 in RK2_ReParametrize after EHFinder_ReParametrizeRK2_1 -# { -# LANG: Fortran -# SYNC: f -# } "Apply symmetry boundaries and sync" -# -# # Schedule the routine that does the second RK2 step -# -# schedule EHFinder_ReParametrizeRK2_2 in RK2_ReParametrize after Sym_RK2_1 -# { -# LANG: Fortran -# } "RK2 scheme step 2" -# -# # Then synchronize the level set and apply symmetry boundary conditions. -# -# schedule EHFinder_ApplySymF AS Sym_RK2_2 in RK2_ReParametrize after EHFinder_ReParametrizeRK2_2 -# { -# LANG: Fortran -# SYNC: f -# } "Apply symmetry boundaries and sync" -# } -# } - -# if (CCTK_Equals(re_param_method,"approx") || CCTK_Equals(re_param_method,"mixed")) -# { - -# # Schedule a routine to update the points closest to the zero-level surface. - -# schedule EHFinder_ReParametrize5 in EHFinder_ReParametrize after EHFinder_ReParametrizeControl -# { -# LANG: Fortran -# } "Update the points closest to the surface" - -# schedule EHFinder_ApplySymFRep in EHFinder_ReParametrize after EHFinder_ReParametrize5 -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: rep_mask -# } "Apply symmetry boundaries and sync" - -# # Set up the schedule group for approx re-parametrization using -# # re_param_control_approx to control the exit from the while loop. - -# schedule GROUP Approx_ReParametrize in EHFinder_ReParametrize AFTER EHFinder_ReParametrizeControl WHILE ehfinder::re_param_control_approx -# { -# } "Schedule group for Approximate re-parametrization" - -# schedule EHFinder_ReParametrize6 in Approx_ReParametrize -# { -# LANG: Fortran -# } "Update cells with neighbours that have already been updated" - -# schedule EHFinder_ReParametrize7 in Approx_ReParametrize after ReParametrize6 -# { -# LANG: Fortran -# } "Update rep_mask" - -# schedule EHFinder_ApplySymFRep in Approx_ReParametrize after EHFinder_ReParametrize7 -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: rep_mask -# } "Apply symmetry boundaries and sync" -} + if (CCTK_Equals(re_init_int_method,"rk2")) + { + + # Set up the schedule group for rk2 re-initialization using + # re_init_control to control the exit from the while loop. + + schedule GROUP RK2_ReInitialize in EHFinder_ReInitialize AFTER EHFinder_ReInitializeControl WHILE ehfinder::re_init_control + { + } "Schedule group for RK2 re-initialization" + + # Schedule the routine that does the first RK2 step + + schedule EHFinder_ReInitializeRK2_1 in RK2_ReInitialize + { + LANG: Fortran + STORAGE: dfx + STORAGE: dfy + STORAGE: dfz + STORAGE: dfsq + } "RK2 scheme step 1" + + # Then synchronize the level set and apply symmetry boundary conditions. + + schedule EHFinder_ApplySymF AS Sym_RK2_1 in RK2_ReInitialize after EHFinder_ReInitializeRK2_1 + { + LANG: Fortran + SYNC: f + } "Apply symmetry boundaries and sync" + + # Schedule the routine that does the second RK2 step + + schedule EHFinder_ReInitializeRK2_2 in RK2_ReInitialize after Sym_RK2_1 + { + LANG: Fortran + STORAGE: dfx + STORAGE: dfy + STORAGE: dfz + STORAGE: dfsq + } "RK2 scheme step 2" + + # Then synchronize the level set and apply symmetry boundary conditions. + + schedule EHFinder_ApplySymF AS Sym_RK2_2 in RK2_ReInitialize after EHFinder_ReInitializeRK2_2 + { + LANG: Fortran + SYNC: f + } "Apply symmetry boundaries and sync" + } # Schedule modifications of the mask in group EHFinder_SetMask - schedule GROUP EHFinder_SetMask at CCTK_POSTSTEP after EHFinder_ReParametrize + schedule GROUP EHFinder_SetMask at CCTK_POSTSTEP after EHFinder_ReInitialize { STORAGE: tm_mask } "Set the mask" @@ -527,7 +482,7 @@ if (CCTK_Equals(re_param_method,"pde") || CCTK_Equals(re_param_method,"mixed")) { LANG: Fortran } "Apply symmetry boundaries" - + # Finally locate the mask boundary and add values to distinguish different # directions. @@ -541,7 +496,7 @@ if (CCTK_Equals(re_param_method,"pde") || CCTK_Equals(re_param_method,"mixed")) { LANG: Fortran } "Apply symmetry boundaries" - + schedule EHFinder_SetMask3 in EHFinder_SetMask after EHFinder_ASM1 { LANG: Fortran @@ -563,195 +518,24 @@ if (CCTK_Equals(re_param_method,"pde") || CCTK_Equals(re_param_method,"mixed")) { LANG: Fortran } "Apply symmetry boundaries" - -} -if ( evolve_generators) -{ - if (CCTK_Equals(generator_tracking_method,"interpolate_before")) + if ( evolve_generators) { - schedule EHFinder_Generator_Sources as EGS in MoL_CalcRHS + if (CCTK_Equals(generator_tracking_method,"interpolate_before")) { - LANG: Fortran - STORAGE: generator_arrays - } "Calculate the source terms for the generator evolution" - } - if (CCTK_Equals(generator_tracking_method,"interpolate_after")) - { - schedule EHFinder_Generator_Sources2 as EGS2 in MoL_CalcRHS + schedule EHFinder_Generator_Sources as EGS in MoL_CalcRHS + { + LANG: Fortran + STORAGE: generator_arrays + } "Calculate the source terms for the generator evolution" + } + if (CCTK_Equals(generator_tracking_method,"interpolate_after")) { - LANG: Fortran - STORAGE: generator_arrays - } "Calculate the source terms for the generator evolution" + schedule EHFinder_Generator_Sources2 as EGS2 in MoL_CalcRHS + { + LANG: Fortran + STORAGE: generator_arrays + } "Calculate the source terms for the generator evolution" + } } } - - -#schedule EHFinder_ApplySym at CCTK_POSTINITIAL after EHFinder_MaskInit -#{ -# LANG: Fortran -# SYNC: level_set -#} "apply symmetry boundaries" -# -#schedule GROUP EHFinder_ReParamInit at CCTK_POSTINITIAL after EHFinder_MaskInit -#{ -# LANG: Fortran -#} "Initial re-parametrization and setting of the mask" -# -#if (CCTK_Equals(re_param_method,"approx")) -#{ -# schedule GROUP Init_ReParametrize in EHFinder_ReParamInit -# { -# LANG: Fortran -# STORAGE: rep_mask -# } "Approximation re-parametrization" -# -# schedule EHFinder_ReParametrize5 in Init_ReParametrize -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: rep_mask -# } "First step in approximation re-parametrization" -# -# schedule EHFinder_ReParametrize6 in Init_ReParametrize AFTER EHFinder_ReParametrize5 WHILE ehfinder::re_param_control -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: rep_mask -# } "Second step in approximation re-parametrization" -#} -# -#schedule EHFinder_SetMask in EHFinder_ReParamInit after EHFinder_ReParametrize6 -#{ -# LANG: Fortran -#} "Set the mask" -# -#if (CCTK_Equals(mode,"normal")) -#{ -# schedule EHFinder_Sources in MoL_CalcRHS -# { -# LANG: Fortran -# } "Calculate the source terms" -#} -# -#if (CCTK_Equals(mode,"test_reparam")) -#{ -# schedule EHFinder_Sources3 in MoL_CalcRHS -# { -# LANG: Fortran -# } "Calculate the source terms for reparam test" -#} -# -#if (!CCTK_Equals(mode,"test_reparam")) -#{ -# schedule GROUP EHFinder_ReParametrize at CCTK_POSTSTEP -# { -# LANG: Fortran -# } "Re-parametrize the level set function" -# -# if (CCTK_Equals(re_param_method,"pde")) -# { -# schedule EHFinder_ReParametrize1 in EHFinder_ReParametrize -# { -# LANG: Fortran -# } "Initializes the re-parametrization control" -# -# if (CCTK_Equals(re_param_int_method,"euler")) -# { -# schedule GROUP Euler_ReParametrize in EHFinder_ReParametrize AFTER EHFinder_ReParametrize1 WHILE ehfinder::re_param_control -# { -# } "Schedule group for Euler re-parametrization" -# -# schedule EHFinder_ReParametrize4 in Euler_ReParametrize -# { -# LANG: Fortran -# SYNC: level_set -# } "Euler scheme" -# -# schedule EHFinder_ApplySym in Euler_ReParametrize after EHFinder_ReParametrize4 -# { -# LANG: Fortran -# SYNC: level_set -# } "apply symmetry boundaries" -# } -# -# if (CCTK_Equals(re_param_int_method,"rk2")) -# { -# schedule GROUP RK2_ReParametrize in EHFinder_ReParametrize AFTER EHFinder_ReParametrize1 WHILE ehfinder::re_param_control -# { -# LANG: Fortran -# } "rk2 evolution for re-parametrization" -# -# schedule EHFinder_ReParametrize2 in RK2_ReParametrize -# { -# LANG: Fortran -# SYNC: ftmp -# } "First step of the RK2 scheme" -# -# schedule EHFinder_ReParametrize3 in RK2_ReParametrize -# { -# LANG: Fortran -# SYNC: level_set -# } "Second step of the RK2 scheme" -# } -# } -# -# if (CCTK_Equals(re_param_method,"approx")) -# { -# schedule GROUP Approx_ReParametrize in EHFinder_ReParametrize -# { -# LANG: Fortran -# } "Approximation re-parametrization" -# -# schedule EHFinder_ReParametrize5 in Approx_ReParametrize -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: dlevel_set -# SYNC: rep_mask -# } "First step in approximation re-parametrization" -# -# schedule EHFinder_ApplySym in Approx_ReParametrize AFTER EHFinder_ReParametrize5 -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: rep_mask -# } "Apply symmetry boundaries" -# -# schedule GROUP EHFinder_Loop in Approx_ReParametrize AFTER EHFinder_ApplySym WHILE ehfinder::re_param_control -# { -# LANG: Fortran -# SYNC: eh_mask_all -# } "Loop for second step in approximation re-parametrization" -# -# schedule EHFinder_ReParametrize6 in EHFinder_Loop -# { -# LANG: Fortran -# } "Second step in approximation re-parametrization" -# -# schedule EHFinder_ReParametrize7 in EHFinder_Loop AFTER EHFinder_ReParametrize6 -# { -# LANG: Fortran -# } "Update the re-parametrization mask" -# -# schedule EHFinder_ApplySym in EHFinder_Loop AFTER EHFinder_ReParametrize7 -# { -# LANG: Fortran -# SYNC: level_set -# SYNC: rep_mask -# } "Apply symmetry boundaries" -# -# schedule EHFinder_SetMask in EHFinder_ReParametrize after Approx_ReParametrize -# { -# LANG: Fortran -# SYNC: level_set -# } "Set the mask" -# -# schedule EHFinder_ApplySym in EHFinder_ReParametrize after EHFinder_SetMask -# { -# LANG: Fortran -# SYNC: level_set -# } "apply symmetry boundaries" -# -# } -#} -- cgit v1.2.3