Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TypeError: cannot determine truth value of Relational when implementing free surface with Subdomain with simpy==1.12 #2163

Closed
ofmla opened this issue Jul 19, 2023 · 0 comments · Fixed by #2165

Comments

@ofmla
Copy link
Contributor

ofmla commented Jul 19, 2023

I got the error below when I tried to implement a free surface boundary condition with the images method roughly following what is done in the acoustic case and tutorial 04_boundary_conditions . The output shows the sympy version at start (== 1.12). Downgrading to older versions of sympy as 1.11.1 or 1.10.1 in the devito environment solves the issue. The code to reproduce the issue is in attachment. I will try to write a shorter code (MFE).

1.12
Operator `initdamp` ran in 0.01 s
Traceback (most recent call last):
  File "/home/hpc/Documentos/fail_fs_tti.py", line 104, in <module>
    op = Operator(stencils + src_term + rec_term, subs=model.spacing_map)
  File "/home/hpc/my_forks/devito/devito/operator/operator.py", line 158, in __new__
    op = cls._build(expressions, **kwargs)
  File "/home/hpc/my_forks/devito/devito/operator/operator.py", line 180, in _build
    irs, byproduct = cls._lower(expressions, profiler=profiler, **kwargs)
  File "/home/hpc/my_forks/devito/devito/operator/operator.py", line 255, in _lower
    clusters = cls._lower_clusters(expressions, **kwargs)
  File "/home/hpc/my_forks/devito/devito/tools/timing.py", line 76, in __call__
    retval = self.func(*args, **kwargs)
  File "/home/hpc/my_forks/devito/devito/operator/operator.py", line 357, in _lower_clusters
    clusters = cls._specialize_clusters(clusters, **kwargs)
  File "/home/hpc/my_forks/devito/devito/tools/timing.py", line 76, in __call__
    retval = self.func(*args, **kwargs)
  File "/home/hpc/my_forks/devito/devito/core/cpu.py", line 136, in _specialize_clusters
    clusters = cire(clusters, 'invariants', sregistry, options, platform)
  File "/home/hpc/my_forks/devito/devito/tools/timing.py", line 76, in __call__
    retval = self.func(*args, **kwargs)
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 93, in cire
    clusters = transformer.process(clusters)
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 235, in process
    return self._process_fatd(clusters, 1, xtracted=[])
  File "/home/hpc/my_forks/devito/devito/ir/clusters/visitors.py", line 111, in _process_fatd
    _clusters = self.callback(list(g), pfx, **kwargs)
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 256, in callback
    made = self._aliases_from_clusters(g, exclude, ak)
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 121, in _aliases_from_clusters
    found = collect(mapper.extracted, meta.ispace, self.opt_minstorage)
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 515, in collect
    found = {g: g.find_rotation_distance(d, interval) for g in impacted}
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 515, in <dictcomp>
    found = {g: g.find_rotation_distance(d, interval) for g in impacted}
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 1076, in find_rotation_distance
    min_interval = self._pivot_min_intervals[d].translate(-distance)
  File "/home/hpc/anaconda3/envs/devito_dev/lib/python3.9/site-packages/cached_property.py", line 36, in __get__
    value = obj.__dict__[self.func.__name__] = self.func(obj)
  File "/home/hpc/my_forks/devito/devito/passes/clusters/aliases.py", line 1172, in _pivot_min_intervals
    ret[d][0] = min(ret[d][0], value)
  File "/home/hpc/anaconda3/envs/devito_dev/lib/python3.9/site-packages/sympy/core/relational.py", line 510, in __bool__
    raise TypeError("cannot determine truth value of Relational")
TypeError: cannot determine truth value of Relational

fail_fs_tti.py.txt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant