diff options
Diffstat (limited to 'src/qlm_interpolate.F90')
-rw-r--r-- | src/qlm_interpolate.F90 | 688 |
1 files changed, 398 insertions, 290 deletions
diff --git a/src/qlm_interpolate.F90 b/src/qlm_interpolate.F90 index 82ec27e..8317de7 100644 --- a/src/qlm_interpolate.F90 +++ b/src/qlm_interpolate.F90 @@ -29,6 +29,8 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) integer, parameter :: sk = kind(interpolator) CCTK_REAL, parameter :: one = 1 + CCTK_REAL, parameter :: poison_value = -42 + integer :: len_coordsystem integer :: len_interpolator integer :: len_interpolator_options @@ -54,14 +56,17 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) integer :: ind_kxx, ind_kxy, ind_kxz, ind_kyy, ind_kyz, ind_kzz integer :: ind_alpha integer :: ind_betax, ind_betay, ind_betaz + integer :: ind_ttt + integer :: ind_ttx, ind_tty, ind_ttz + integer :: ind_txx, ind_txy, ind_txz, ind_tyy, ind_tyz, ind_tzz integer :: coord_type CCTK_POINTER :: coords(3) - CCTK_INT :: inputs(16) - CCTK_INT :: output_types(88) - CCTK_POINTER :: outputs(88) - CCTK_INT :: operand_indices(88) - CCTK_INT :: operation_codes(88) + CCTK_INT :: inputs(26) + CCTK_INT :: output_types(98) + CCTK_POINTER :: outputs(98) + CCTK_INT :: operand_indices(98) + CCTK_INT :: operation_codes(98) integer :: npoints character :: msg*1000 @@ -82,6 +87,10 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) call CCTK_WARN (0, "The shift must have storage") end if +!!$ if (stress_energy_state==0) then +!!$ call CCTK_WARN (0, "The stress-energy tensor must have storage") +!!$ end if + ! Get coordinate system @@ -137,22 +146,45 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) ! TODO: check the excision mask ! Get variable indices - call CCTK_VarIndex (ind_gxx , "ADMBase::gxx" ) - call CCTK_VarIndex (ind_gxy , "ADMBase::gxy" ) - call CCTK_VarIndex (ind_gxz , "ADMBase::gxz" ) - call CCTK_VarIndex (ind_gyy , "ADMBase::gyy" ) - call CCTK_VarIndex (ind_gyz , "ADMBase::gyz" ) - call CCTK_VarIndex (ind_gzz , "ADMBase::gzz" ) - call CCTK_VarIndex (ind_kxx , "ADMBase::kxx" ) - call CCTK_VarIndex (ind_kxy , "ADMBase::kxy" ) - call CCTK_VarIndex (ind_kxz , "ADMBase::kxz" ) - call CCTK_VarIndex (ind_kyy , "ADMBase::kyy" ) - call CCTK_VarIndex (ind_kyz , "ADMBase::kyz" ) - call CCTK_VarIndex (ind_kzz , "ADMBase::kzz" ) - call CCTK_VarIndex (ind_alpha, "ADMBase::alp" ) - call CCTK_VarIndex (ind_betax, "ADMBase::betax") - call CCTK_VarIndex (ind_betay, "ADMBase::betay") - call CCTK_VarIndex (ind_betaz, "ADMBase::betaz") + call CCTK_VarIndex (ind_gxx , "ADMBase::gxx" ) + call CCTK_VarIndex (ind_gxy , "ADMBase::gxy" ) + call CCTK_VarIndex (ind_gxz , "ADMBase::gxz" ) + call CCTK_VarIndex (ind_gyy , "ADMBase::gyy" ) + call CCTK_VarIndex (ind_gyz , "ADMBase::gyz" ) + call CCTK_VarIndex (ind_gzz , "ADMBase::gzz" ) + call CCTK_VarIndex (ind_kxx , "ADMBase::kxx" ) + call CCTK_VarIndex (ind_kxy , "ADMBase::kxy" ) + call CCTK_VarIndex (ind_kxz , "ADMBase::kxz" ) + call CCTK_VarIndex (ind_kyy , "ADMBase::kyy" ) + call CCTK_VarIndex (ind_kyz , "ADMBase::kyz" ) + call CCTK_VarIndex (ind_kzz , "ADMBase::kzz" ) + call CCTK_VarIndex (ind_alpha, "ADMBase::alp" ) + call CCTK_VarIndex (ind_betax, "ADMBase::betax" ) + call CCTK_VarIndex (ind_betay, "ADMBase::betay" ) + call CCTK_VarIndex (ind_betaz, "ADMBase::betaz" ) + if (stress_energy_state /= 0) then + call CCTK_VarIndex (ind_ttt , "TmunuBase::eTtt") + call CCTK_VarIndex (ind_ttx , "TmunuBase::eTtx") + call CCTK_VarIndex (ind_tty , "TmunuBase::eTty") + call CCTK_VarIndex (ind_ttz , "TmunuBase::eTtz") + call CCTK_VarIndex (ind_txx , "TmunuBase::eTxx") + call CCTK_VarIndex (ind_txy , "TmunuBase::eTxy") + call CCTK_VarIndex (ind_txz , "TmunuBase::eTxz") + call CCTK_VarIndex (ind_tyy , "TmunuBase::eTyy") + call CCTK_VarIndex (ind_tyz , "TmunuBase::eTyz") + call CCTK_VarIndex (ind_tzz , "TmunuBase::eTzz") + else + ind_ttt = -1 + ind_ttx = -1 + ind_tty = -1 + ind_ttz = -1 + ind_txx = -1 + ind_txy = -1 + ind_txz = -1 + ind_tyy = -1 + ind_tyz = -1 + ind_tzz = -1 + end if @@ -170,7 +202,11 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) ind_gxx, ind_gxy, ind_gxz, ind_gyy, ind_gyz, ind_gzz, & ind_kxx, ind_kxy, ind_kxz, ind_kyy, ind_kyz, ind_kzz, & ind_alpha, & - ind_betax, ind_betay, ind_betaz /) + ind_betax, ind_betay, ind_betaz, & + ind_ttt, & + ind_ttx, ind_tty, ind_ttz, & + ind_txx, ind_txy, ind_txz, ind_tyy, ind_tyz, ind_tzz /) + call CCTK_NumVars (nvars) if (nvars < 0) call CCTK_WARN (0, "internal error") if (any(inputs /= -1 .and. (inputs < 0 .or. inputs >= nvars))) then @@ -193,7 +229,10 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) 06, 07, 08, 09, 10, 11, & 06, 07, 08, 09, 10, 11, & 12, & ! alp - 13, 14, 15 /) ! beta^i + 13, 14, 15, & ! beta^i + 16, & ! T_tt + 17, 18, 19, & ! T_ti + 20, 21, 22, 23, 24, 25 /) ! T_ij operation_codes = (/ & 0, 0, 0, 0, 0, 0, & ! g_ij @@ -211,7 +250,10 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) 2, 2, 2, 2, 2, 2, & 3, 3, 3, 3, 3, 3, & 0, & ! alp - 0, 0, 0 /) ! beta^i + 0, 0, 0, & ! beta^i + 0, & ! T_tt + 0, 0, 0, & ! T_ti + 0, 0, 0, 0, 0, 0 /) ! T_ij output_types(:) = CCTK_VARIABLE_REAL if (hn > 0) then @@ -231,7 +273,10 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) P(qlm_dkxxy), P(qlm_dkxyy), P(qlm_dkxzy), P(qlm_dkyyy), P(qlm_dkyzy), P(qlm_dkzzy), & P(qlm_dkxxz), P(qlm_dkxyz), P(qlm_dkxzz), P(qlm_dkyyz), P(qlm_dkyzz), P(qlm_dkzzz), & P(qlm_alpha), & - P(qlm_betax), P(qlm_betay), P(qlm_betaz) /) + P(qlm_betax), P(qlm_betay), P(qlm_betaz), & + P(qlm_ttt), & + P(qlm_ttx), P(qlm_tty), P(qlm_ttz), & + P(qlm_txx), P(qlm_txy), P(qlm_txz), P(qlm_tyy), P(qlm_tyz), P(qlm_tzz) /) else outputs(:) = CCTK_NullPointer() end if @@ -245,95 +290,104 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) #if 0 ! Poison the output variables -#define poison -42 - qlm_gxx = poison - qlm_gxy = poison - qlm_gxz = poison - qlm_gyy = poison - qlm_gyz = poison - qlm_gzz = poison - qlm_dgxxx = poison - qlm_dgxyx = poison - qlm_dgxzx = poison - qlm_dgyyx = poison - qlm_dgyzx = poison - qlm_dgzzx = poison - qlm_dgxxy = poison - qlm_dgxyy = poison - qlm_dgxzy = poison - qlm_dgyyy = poison - qlm_dgyzy = poison - qlm_dgzzy = poison - qlm_dgxxz = poison - qlm_dgxyz = poison - qlm_dgxzz = poison - qlm_dgyyz = poison - qlm_dgyzz = poison - qlm_dgzzz = poison - qlm_ddgxxxx = poison - qlm_ddgxyxx = poison - qlm_ddgxzxx = poison - qlm_ddgyyxx = poison - qlm_ddgyzxx = poison - qlm_ddgzzxx = poison - qlm_ddgxxxy = poison - qlm_ddgxyxy = poison - qlm_ddgxzxy = poison - qlm_ddgyyxy = poison - qlm_ddgyzxy = poison - qlm_ddgzzxy = poison - qlm_ddgxxxz = poison - qlm_ddgxyxz = poison - qlm_ddgxzxz = poison - qlm_ddgyyxz = poison - qlm_ddgyzxz = poison - qlm_ddgzzxz = poison - qlm_ddgxxyy = poison - qlm_ddgxyyy = poison - qlm_ddgxzyy = poison - qlm_ddgyyyy = poison - qlm_ddgyzyy = poison - qlm_ddgzzyy = poison - qlm_ddgxxyz = poison - qlm_ddgxyyz = poison - qlm_ddgxzyz = poison - qlm_ddgyyyz = poison - qlm_ddgyzyz = poison - qlm_ddgzzyz = poison - qlm_ddgxxzz = poison - qlm_ddgxyzz = poison - qlm_ddgxzzz = poison - qlm_ddgyyzz = poison - qlm_ddgyzzz = poison - qlm_ddgzzzz = poison - qlm_kxx = poison - qlm_kxy = poison - qlm_kxz = poison - qlm_kyy = poison - qlm_kyz = poison - qlm_kzz = poison - qlm_dkxxx = poison - qlm_dkxyx = poison - qlm_dkxzx = poison - qlm_dkyyx = poison - qlm_dkyzx = poison - qlm_dkzzx = poison - qlm_dkxxy = poison - qlm_dkxyy = poison - qlm_dkxzy = poison - qlm_dkyyy = poison - qlm_dkyzy = poison - qlm_dkzzy = poison - qlm_dkxxz = poison - qlm_dkxyz = poison - qlm_dkxzz = poison - qlm_dkyyz = poison - qlm_dkyzz = poison - qlm_dkzzz = poison - qlm_alpha = poison - qlm_betax = poison - qlm_betay = poison - qlm_betaz = poison + call poison (qlm_gxx ) + call poison (qlm_gxy ) + call poison (qlm_gxz ) + call poison (qlm_gyy ) + call poison (qlm_gyz ) + call poison (qlm_gzz ) + call poison (qlm_dgxxx ) + call poison (qlm_dgxyx ) + call poison (qlm_dgxzx ) + call poison (qlm_dgyyx ) + call poison (qlm_dgyzx ) + call poison (qlm_dgzzx ) + call poison (qlm_dgxxy ) + call poison (qlm_dgxyy ) + call poison (qlm_dgxzy ) + call poison (qlm_dgyyy ) + call poison (qlm_dgyzy ) + call poison (qlm_dgzzy ) + call poison (qlm_dgxxz ) + call poison (qlm_dgxyz ) + call poison (qlm_dgxzz ) + call poison (qlm_dgyyz ) + call poison (qlm_dgyzz ) + call poison (qlm_dgzzz ) + call poison (qlm_ddgxxxx) + call poison (qlm_ddgxyxx) + call poison (qlm_ddgxzxx) + call poison (qlm_ddgyyxx) + call poison (qlm_ddgyzxx) + call poison (qlm_ddgzzxx) + call poison (qlm_ddgxxxy) + call poison (qlm_ddgxyxy) + call poison (qlm_ddgxzxy) + call poison (qlm_ddgyyxy) + call poison (qlm_ddgyzxy) + call poison (qlm_ddgzzxy) + call poison (qlm_ddgxxxz) + call poison (qlm_ddgxyxz) + call poison (qlm_ddgxzxz) + call poison (qlm_ddgyyxz) + call poison (qlm_ddgyzxz) + call poison (qlm_ddgzzxz) + call poison (qlm_ddgxxyy) + call poison (qlm_ddgxyyy) + call poison (qlm_ddgxzyy) + call poison (qlm_ddgyyyy) + call poison (qlm_ddgyzyy) + call poison (qlm_ddgzzyy) + call poison (qlm_ddgxxyz) + call poison (qlm_ddgxyyz) + call poison (qlm_ddgxzyz) + call poison (qlm_ddgyyyz) + call poison (qlm_ddgyzyz) + call poison (qlm_ddgzzyz) + call poison (qlm_ddgxxzz) + call poison (qlm_ddgxyzz) + call poison (qlm_ddgxzzz) + call poison (qlm_ddgyyzz) + call poison (qlm_ddgyzzz) + call poison (qlm_ddgzzzz) + call poison (qlm_kxx ) + call poison (qlm_kxy ) + call poison (qlm_kxz ) + call poison (qlm_kyy ) + call poison (qlm_kyz ) + call poison (qlm_kzz ) + call poison (qlm_dkxxx ) + call poison (qlm_dkxyx ) + call poison (qlm_dkxzx ) + call poison (qlm_dkyyx ) + call poison (qlm_dkyzx ) + call poison (qlm_dkzzx ) + call poison (qlm_dkxxy ) + call poison (qlm_dkxyy ) + call poison (qlm_dkxzy ) + call poison (qlm_dkyyy ) + call poison (qlm_dkyzy ) + call poison (qlm_dkzzy ) + call poison (qlm_dkxxz ) + call poison (qlm_dkxyz ) + call poison (qlm_dkxzz ) + call poison (qlm_dkyyz ) + call poison (qlm_dkyzz ) + call poison (qlm_dkzzz ) + call poison (qlm_alpha ) + call poison (qlm_betax ) + call poison (qlm_betay ) + call poison (qlm_betaz ) + call poison (qlm_ttt ) + call poison (qlm_ttx ) + call poison (qlm_tty ) + call poison (qlm_ttz ) + call poison (qlm_txx ) + call poison (qlm_txy ) + call poison (qlm_txz ) + call poison (qlm_tyy ) + call poison (qlm_tyz ) + call poison (qlm_tzz ) #endif @@ -368,187 +422,220 @@ subroutine qlm_interpolate (CCTK_ARGUMENTS, hn) ! Unpack the variables if (hn > 0) then - call unpack (qlm_gxx , ni, nj) - call unpack (qlm_gxy , ni, nj) - call unpack (qlm_gxz , ni, nj) - call unpack (qlm_gyy , ni, nj) - call unpack (qlm_gyz , ni, nj) - call unpack (qlm_gzz , ni, nj) - call unpack (qlm_dgxxx , ni, nj) - call unpack (qlm_dgxyx , ni, nj) - call unpack (qlm_dgxzx , ni, nj) - call unpack (qlm_dgyyx , ni, nj) - call unpack (qlm_dgyzx , ni, nj) - call unpack (qlm_dgzzx , ni, nj) - call unpack (qlm_dgxxy , ni, nj) - call unpack (qlm_dgxyy , ni, nj) - call unpack (qlm_dgxzy , ni, nj) - call unpack (qlm_dgyyy , ni, nj) - call unpack (qlm_dgyzy , ni, nj) - call unpack (qlm_dgzzy , ni, nj) - call unpack (qlm_dgxxz , ni, nj) - call unpack (qlm_dgxyz , ni, nj) - call unpack (qlm_dgxzz , ni, nj) - call unpack (qlm_dgyyz , ni, nj) - call unpack (qlm_dgyzz , ni, nj) - call unpack (qlm_dgzzz , ni, nj) - call unpack (qlm_ddgxxxx , ni, nj) - call unpack (qlm_ddgxyxx , ni, nj) - call unpack (qlm_ddgxzxx , ni, nj) - call unpack (qlm_ddgyyxx , ni, nj) - call unpack (qlm_ddgyzxx , ni, nj) - call unpack (qlm_ddgzzxx , ni, nj) - call unpack (qlm_ddgxxxy , ni, nj) - call unpack (qlm_ddgxyxy , ni, nj) - call unpack (qlm_ddgxzxy , ni, nj) - call unpack (qlm_ddgyyxy , ni, nj) - call unpack (qlm_ddgyzxy , ni, nj) - call unpack (qlm_ddgzzxy , ni, nj) - call unpack (qlm_ddgxxxz , ni, nj) - call unpack (qlm_ddgxyxz , ni, nj) - call unpack (qlm_ddgxzxz , ni, nj) - call unpack (qlm_ddgyyxz , ni, nj) - call unpack (qlm_ddgyzxz , ni, nj) - call unpack (qlm_ddgzzxz , ni, nj) - call unpack (qlm_ddgxxyy , ni, nj) - call unpack (qlm_ddgxyyy , ni, nj) - call unpack (qlm_ddgxzyy , ni, nj) - call unpack (qlm_ddgyyyy , ni, nj) - call unpack (qlm_ddgyzyy , ni, nj) - call unpack (qlm_ddgzzyy , ni, nj) - call unpack (qlm_ddgxxyz , ni, nj) - call unpack (qlm_ddgxyyz , ni, nj) - call unpack (qlm_ddgxzyz , ni, nj) - call unpack (qlm_ddgyyyz , ni, nj) - call unpack (qlm_ddgyzyz , ni, nj) - call unpack (qlm_ddgzzyz , ni, nj) - call unpack (qlm_ddgxxzz , ni, nj) - call unpack (qlm_ddgxyzz , ni, nj) - call unpack (qlm_ddgxzzz , ni, nj) - call unpack (qlm_ddgyyzz , ni, nj) - call unpack (qlm_ddgyzzz , ni, nj) - call unpack (qlm_ddgzzzz , ni, nj) - call unpack (qlm_kxx , ni, nj) - call unpack (qlm_kxy , ni, nj) - call unpack (qlm_kxz , ni, nj) - call unpack (qlm_kyy , ni, nj) - call unpack (qlm_kyz , ni, nj) - call unpack (qlm_kzz , ni, nj) - call unpack (qlm_dkxxx , ni, nj) - call unpack (qlm_dkxyx , ni, nj) - call unpack (qlm_dkxzx , ni, nj) - call unpack (qlm_dkyyx , ni, nj) - call unpack (qlm_dkyzx , ni, nj) - call unpack (qlm_dkzzx , ni, nj) - call unpack (qlm_dkxxy , ni, nj) - call unpack (qlm_dkxyy , ni, nj) - call unpack (qlm_dkxzy , ni, nj) - call unpack (qlm_dkyyy , ni, nj) - call unpack (qlm_dkyzy , ni, nj) - call unpack (qlm_dkzzy , ni, nj) - call unpack (qlm_dkxxz , ni, nj) - call unpack (qlm_dkxyz , ni, nj) - call unpack (qlm_dkxzz , ni, nj) - call unpack (qlm_dkyyz , ni, nj) - call unpack (qlm_dkyzz , ni, nj) - call unpack (qlm_dkzzz , ni, nj) - call unpack (qlm_alpha , ni, nj) - call unpack (qlm_betax , ni, nj) - call unpack (qlm_betay , ni, nj) - call unpack (qlm_betaz , ni, nj) + call unpack (qlm_gxx , ni, nj) + call unpack (qlm_gxy , ni, nj) + call unpack (qlm_gxz , ni, nj) + call unpack (qlm_gyy , ni, nj) + call unpack (qlm_gyz , ni, nj) + call unpack (qlm_gzz , ni, nj) + call unpack (qlm_dgxxx , ni, nj) + call unpack (qlm_dgxyx , ni, nj) + call unpack (qlm_dgxzx , ni, nj) + call unpack (qlm_dgyyx , ni, nj) + call unpack (qlm_dgyzx , ni, nj) + call unpack (qlm_dgzzx , ni, nj) + call unpack (qlm_dgxxy , ni, nj) + call unpack (qlm_dgxyy , ni, nj) + call unpack (qlm_dgxzy , ni, nj) + call unpack (qlm_dgyyy , ni, nj) + call unpack (qlm_dgyzy , ni, nj) + call unpack (qlm_dgzzy , ni, nj) + call unpack (qlm_dgxxz , ni, nj) + call unpack (qlm_dgxyz , ni, nj) + call unpack (qlm_dgxzz , ni, nj) + call unpack (qlm_dgyyz , ni, nj) + call unpack (qlm_dgyzz , ni, nj) + call unpack (qlm_dgzzz , ni, nj) + call unpack (qlm_ddgxxxx, ni, nj) + call unpack (qlm_ddgxyxx, ni, nj) + call unpack (qlm_ddgxzxx, ni, nj) + call unpack (qlm_ddgyyxx, ni, nj) + call unpack (qlm_ddgyzxx, ni, nj) + call unpack (qlm_ddgzzxx, ni, nj) + call unpack (qlm_ddgxxxy, ni, nj) + call unpack (qlm_ddgxyxy, ni, nj) + call unpack (qlm_ddgxzxy, ni, nj) + call unpack (qlm_ddgyyxy, ni, nj) + call unpack (qlm_ddgyzxy, ni, nj) + call unpack (qlm_ddgzzxy, ni, nj) + call unpack (qlm_ddgxxxz, ni, nj) + call unpack (qlm_ddgxyxz, ni, nj) + call unpack (qlm_ddgxzxz, ni, nj) + call unpack (qlm_ddgyyxz, ni, nj) + call unpack (qlm_ddgyzxz, ni, nj) + call unpack (qlm_ddgzzxz, ni, nj) + call unpack (qlm_ddgxxyy, ni, nj) + call unpack (qlm_ddgxyyy, ni, nj) + call unpack (qlm_ddgxzyy, ni, nj) + call unpack (qlm_ddgyyyy, ni, nj) + call unpack (qlm_ddgyzyy, ni, nj) + call unpack (qlm_ddgzzyy, ni, nj) + call unpack (qlm_ddgxxyz, ni, nj) + call unpack (qlm_ddgxyyz, ni, nj) + call unpack (qlm_ddgxzyz, ni, nj) + call unpack (qlm_ddgyyyz, ni, nj) + call unpack (qlm_ddgyzyz, ni, nj) + call unpack (qlm_ddgzzyz, ni, nj) + call unpack (qlm_ddgxxzz, ni, nj) + call unpack (qlm_ddgxyzz, ni, nj) + call unpack (qlm_ddgxzzz, ni, nj) + call unpack (qlm_ddgyyzz, ni, nj) + call unpack (qlm_ddgyzzz, ni, nj) + call unpack (qlm_ddgzzzz, ni, nj) + call unpack (qlm_kxx , ni, nj) + call unpack (qlm_kxy , ni, nj) + call unpack (qlm_kxz , ni, nj) + call unpack (qlm_kyy , ni, nj) + call unpack (qlm_kyz , ni, nj) + call unpack (qlm_kzz , ni, nj) + call unpack (qlm_dkxxx , ni, nj) + call unpack (qlm_dkxyx , ni, nj) + call unpack (qlm_dkxzx , ni, nj) + call unpack (qlm_dkyyx , ni, nj) + call unpack (qlm_dkyzx , ni, nj) + call unpack (qlm_dkzzx , ni, nj) + call unpack (qlm_dkxxy , ni, nj) + call unpack (qlm_dkxyy , ni, nj) + call unpack (qlm_dkxzy , ni, nj) + call unpack (qlm_dkyyy , ni, nj) + call unpack (qlm_dkyzy , ni, nj) + call unpack (qlm_dkzzy , ni, nj) + call unpack (qlm_dkxxz , ni, nj) + call unpack (qlm_dkxyz , ni, nj) + call unpack (qlm_dkxzz , ni, nj) + call unpack (qlm_dkyyz , ni, nj) + call unpack (qlm_dkyzz , ni, nj) + call unpack (qlm_dkzzz , ni, nj) + call unpack (qlm_alpha , ni, nj) + call unpack (qlm_betax , ni, nj) + call unpack (qlm_betay , ni, nj) + call unpack (qlm_betaz , ni, nj) + if (stress_energy_state /= 0) then + call unpack (qlm_ttt , ni, nj) + call unpack (qlm_ttx , ni, nj) + call unpack (qlm_tty , ni, nj) + call unpack (qlm_ttz , ni, nj) + call unpack (qlm_txx , ni, nj) + call unpack (qlm_txy , ni, nj) + call unpack (qlm_txz , ni, nj) + call unpack (qlm_tyy , ni, nj) + call unpack (qlm_tyz , ni, nj) + call unpack (qlm_tzz , ni, nj) + else + qlm_ttt = 0 + qlm_ttx = 0 + qlm_tty = 0 + qlm_ttz = 0 + qlm_txx = 0 + qlm_txy = 0 + qlm_txz = 0 + qlm_tyy = 0 + qlm_tyz = 0 + qlm_tzz = 0 + end if #if 0 ! Check for poison - if (any(qlm_gxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_gxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_gxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_gyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_gyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_gzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxyx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxzx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgyyx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgyzx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgzzx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxzy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgyyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgyzy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgzzy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgxzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgyyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgyzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dgzzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxxxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxyxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxzxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyyxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyzxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgzzxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxxxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxyxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxzxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyyxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyzxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgzzxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxxxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxyxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxzxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyyxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyzxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgzzxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxxyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxyyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxzyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyyyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyzyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgzzyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxxyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxyyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxzyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyyyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyzyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgzzyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxxzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxyzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgxzzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyyzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgyzzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_ddgzzzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_kxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_kxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_kxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_kyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_kyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_kzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxxx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxyx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxzx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkyyx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkyzx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkzzx == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxxy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxzy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkyyy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkyzy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkzzy == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxxz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkxzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkyyz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkyzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_dkzzz == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_alpha == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_betax == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_betay == poison)) call CCTK_WARN (0, "poison found") - if (any(qlm_betaz == poison)) call CCTK_WARN (0, "poison found") + call poison_check (qlm_gxx , "qlm_gxx ") + call poison_check (qlm_gxy , "qlm_gxy ") + call poison_check (qlm_gxz , "qlm_gxz ") + call poison_check (qlm_gyy , "qlm_gyy ") + call poison_check (qlm_gyz , "qlm_gyz ") + call poison_check (qlm_gzz , "qlm_gzz ") + call poison_check (qlm_dgxxx , "qlm_dgxxx ") + call poison_check (qlm_dgxyx , "qlm_dgxyx ") + call poison_check (qlm_dgxzx , "qlm_dgxzx ") + call poison_check (qlm_dgyyx , "qlm_dgyyx ") + call poison_check (qlm_dgyzx , "qlm_dgyzx ") + call poison_check (qlm_dgzzx , "qlm_dgzzx ") + call poison_check (qlm_dgxxy , "qlm_dgxxy ") + call poison_check (qlm_dgxyy , "qlm_dgxyy ") + call poison_check (qlm_dgxzy , "qlm_dgxzy ") + call poison_check (qlm_dgyyy , "qlm_dgyyy ") + call poison_check (qlm_dgyzy , "qlm_dgyzy ") + call poison_check (qlm_dgzzy , "qlm_dgzzy ") + call poison_check (qlm_dgxxz , "qlm_dgxxz ") + call poison_check (qlm_dgxyz , "qlm_dgxyz ") + call poison_check (qlm_dgxzz , "qlm_dgxzz ") + call poison_check (qlm_dgyyz , "qlm_dgyyz ") + call poison_check (qlm_dgyzz , "qlm_dgyzz ") + call poison_check (qlm_dgzzz , "qlm_dgzzz ") + call poison_check (qlm_ddgxxxx, "qlm_ddgxxxx") + call poison_check (qlm_ddgxyxx, "qlm_ddgxyxx") + call poison_check (qlm_ddgxzxx, "qlm_ddgxzxx") + call poison_check (qlm_ddgyyxx, "qlm_ddgyyxx") + call poison_check (qlm_ddgyzxx, "qlm_ddgyzxx") + call poison_check (qlm_ddgzzxx, "qlm_ddgzzxx") + call poison_check (qlm_ddgxxxy, "qlm_ddgxxxy") + call poison_check (qlm_ddgxyxy, "qlm_ddgxyxy") + call poison_check (qlm_ddgxzxy, "qlm_ddgxzxy") + call poison_check (qlm_ddgyyxy, "qlm_ddgyyxy") + call poison_check (qlm_ddgyzxy, "qlm_ddgyzxy") + call poison_check (qlm_ddgzzxy, "qlm_ddgzzxy") + call poison_check (qlm_ddgxxxz, "qlm_ddgxxxz") + call poison_check (qlm_ddgxyxz, "qlm_ddgxyxz") + call poison_check (qlm_ddgxzxz, "qlm_ddgxzxz") + call poison_check (qlm_ddgyyxz, "qlm_ddgyyxz") + call poison_check (qlm_ddgyzxz, "qlm_ddgyzxz") + call poison_check (qlm_ddgzzxz, "qlm_ddgzzxz") + call poison_check (qlm_ddgxxyy, "qlm_ddgxxyy") + call poison_check (qlm_ddgxyyy, "qlm_ddgxyyy") + call poison_check (qlm_ddgxzyy, "qlm_ddgxzyy") + call poison_check (qlm_ddgyyyy, "qlm_ddgyyyy") + call poison_check (qlm_ddgyzyy, "qlm_ddgyzyy") + call poison_check (qlm_ddgzzyy, "qlm_ddgzzyy") + call poison_check (qlm_ddgxxyz, "qlm_ddgxxyz") + call poison_check (qlm_ddgxyyz, "qlm_ddgxyyz") + call poison_check (qlm_ddgxzyz, "qlm_ddgxzyz") + call poison_check (qlm_ddgyyyz, "qlm_ddgyyyz") + call poison_check (qlm_ddgyzyz, "qlm_ddgyzyz") + call poison_check (qlm_ddgzzyz, "qlm_ddgzzyz") + call poison_check (qlm_ddgxxzz, "qlm_ddgxxzz") + call poison_check (qlm_ddgxyzz, "qlm_ddgxyzz") + call poison_check (qlm_ddgxzzz, "qlm_ddgxzzz") + call poison_check (qlm_ddgyyzz, "qlm_ddgyyzz") + call poison_check (qlm_ddgyzzz, "qlm_ddgyzzz") + call poison_check (qlm_ddgzzzz, "qlm_ddgzzzz") + call poison_check (qlm_kxx , "qlm_kxx ") + call poison_check (qlm_kxy , "qlm_kxy ") + call poison_check (qlm_kxz , "qlm_kxz ") + call poison_check (qlm_kyy , "qlm_kyy ") + call poison_check (qlm_kyz , "qlm_kyz ") + call poison_check (qlm_kzz , "qlm_kzz ") + call poison_check (qlm_dkxxx , "qlm_dkxxx ") + call poison_check (qlm_dkxyx , "qlm_dkxyx ") + call poison_check (qlm_dkxzx , "qlm_dkxzx ") + call poison_check (qlm_dkyyx , "qlm_dkyyx ") + call poison_check (qlm_dkyzx , "qlm_dkyzx ") + call poison_check (qlm_dkzzx , "qlm_dkzzx ") + call poison_check (qlm_dkxxy , "qlm_dkxxy ") + call poison_check (qlm_dkxyy , "qlm_dkxyy ") + call poison_check (qlm_dkxzy , "qlm_dkxzy ") + call poison_check (qlm_dkyyy , "qlm_dkyyy ") + call poison_check (qlm_dkyzy , "qlm_dkyzy ") + call poison_check (qlm_dkzzy , "qlm_dkzzy ") + call poison_check (qlm_dkxxz , "qlm_dkxxz ") + call poison_check (qlm_dkxyz , "qlm_dkxyz ") + call poison_check (qlm_dkxzz , "qlm_dkxzz ") + call poison_check (qlm_dkyyz , "qlm_dkyyz ") + call poison_check (qlm_dkyzz , "qlm_dkyzz ") + call poison_check (qlm_dkzzz , "qlm_dkzzz ") + call poison_check (qlm_alpha , "qlm_alpha ") + call poison_check (qlm_betax , "qlm_betax ") + call poison_check (qlm_betay , "qlm_betay ") + call poison_check (qlm_betaz , "qlm_betaz ") + call poison_check (qlm_ttt , "qlm_ttt ") + call poison_check (qlm_ttx , "qlm_ttx ") + call poison_check (qlm_tty , "qlm_tty ") + call poison_check (qlm_ttz , "qlm_ttz ") + call poison_check (qlm_txx , "qlm_txx ") + call poison_check (qlm_txy , "qlm_txy ") + call poison_check (qlm_txz , "qlm_txz ") + call poison_check (qlm_tyy , "qlm_tyy ") + call poison_check (qlm_tyz , "qlm_tyz ") + call poison_check (qlm_tzz , "qlm_tzz ") #endif end if @@ -599,4 +686,25 @@ contains a = b end subroutine copy + subroutine poison (arr) + CCTK_REAL, intent(out) :: arr(:,:) + arr = poison_value + end subroutine poison + + subroutine poison_check (arr, name) + CCTK_REAL, intent(in) :: arr(:,:) + character(*), intent(in) :: name + character*1000 :: msg +!!$ integer :: i, j + if (any(arr==poison_value)) then + write (msg, '("Poison found in ",a)') trim(name) + call CCTK_WARN (CCTK_WARN_ALERT, msg) +!!$ do j=1,size(arr,2) +!!$ do i=1,size(arr,1) +!!$ print '(2i6)', i,j +!!$ end do +!!$ end do + end if + end subroutine poison_check + end subroutine qlm_interpolate |