Skip to content

Surface molecule CROSSINGS and HITS don't work #27

@jczech

Description

@jczech

FRONT, BACK, or ALL CROSSINGS/HITS don't work for surface molecules, although the QRG suggests otherwise:

For a volume molecule output the number of times the named molecule has hit the named region (or object). For a surface molecule output the number of times the named molecule hit the boundary of the named region. The hits specifier should be one of FRONT_HITS, BACK_HITS, ALL_HITS, FRONT_CROSSINGS, BACK_CROSSINGS, and ALL_CROSSINGS. For a volume molecule the meaning of these specifiers is obvious. For a surface molecule FRONT means inside out direction, and BACK means outside in direction. The count is cumulative.

Also, when I say these count statements don't work, I mean that the counts reported are all zero.

We should either fix this or print an error during parsing to indicate that this functionality isn't supported.

Here's an MDL that demonstrates this problem:

ITERATIONS = 1000
TIME_STEP = 1e-06
VACANCY_SEARCH_DISTANCE = 10

DEFINE_MOLECULES {
  sm { DIFFUSION_CONSTANT_2D = 1e-06 }
}

Plane POLYGON_LIST
{
  VERTEX_LIST
  {
    [ -0.074999988079071, -0.0899999886751175, 0 ]
    [ 0.104999989271164, -0.0899999886751175, 0 ]
    [ -0.074999988079071, 0.0899999886751175, 0 ]
    [ 0.104999989271164, 0.0899999886751175, 0 ]
    [ -0.0299999937415123, -0.0899999886751175, 0 ]
    [ 0.0599999949336052, -0.0899999886751175, 0 ]
    [ 0.0599999949336052, 0.0899999886751175, 0 ]
    [ -0.0299999937415123, 0.0899999886751175, 0 ]
    [ -0.074999988079071, 0.0449999943375587, 0 ]
    [ -0.074999988079071, -0.0449999943375587, 0 ]
    [ 0.104999989271164, -0.0449999943375587, 0 ]
    [ 0.104999989271164, 0.0449999943375587, 0 ]
    [ -0.0299999937415123, -0.0449999943375587, 0 ]
    [ -0.0299999937415123, 0.0449999943375587, 0 ]
    [ 0.0599999949336052, -0.0449999943375587, 0 ]
    [ 0.0599999949336052, 0.0449999943375587, 0 ]
  }
  ELEMENT_CONNECTIONS
  {
    [ 11, 3, 6 ]
    [ 13, 7, 2 ]
    [ 15, 6, 7 ]
    [ 5, 14, 12 ]
    [ 14, 15, 13 ]
    [ 4, 12, 9 ]
    [ 12, 13, 8 ]
    [ 1, 10, 14 ]
    [ 10, 11, 15 ]
    [ 15, 11, 6 ]
    [ 8, 13, 2 ]
    [ 13, 15, 7 ]
    [ 4, 5, 12 ]
    [ 12, 14, 13 ]
    [ 0, 4, 9 ]
    [ 9, 12, 8 ]
    [ 5, 1, 14 ]
    [ 14, 10, 15 ]
  }
  DEFINE_SURFACE_REGIONS
  {
    sr_inner
    {
      ELEMENT_LIST = [4, 13]
    }
    sr_outer
    {
      ELEMENT_LIST = [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17]
    }
  }
}

INSTANTIATE Scene OBJECT {
  Plane OBJECT Plane {}
  Release_Site RELEASE_SITE {
   SHAPE = Scene.Plane[sr_inner]
   MOLECULE = sm'
   NUMBER_TO_RELEASE = 1
  }
}

REACTION_DATA_OUTPUT {
  STEP=1e-6
  {COUNT[sm,Scene.Plane[sr_outer],FRONT_HITS]}=> "./sm.sr_outer.fh.dat"
  {COUNT[sm,Scene.Plane[sr_inner],FRONT_HITS]}=> "./sm.sr_inner.fh.dat"
  {COUNT[sm,Scene.Plane[sr_outer],FRONT_CROSSINGS]}=> "./sm.sr_outer.fc.dat"
  {COUNT[sm,Scene.Plane[sr_inner],FRONT_CROSSINGS]}=> "./sm.sr_inner.fc.dat"

  {COUNT[sm,Scene.Plane[sr_outer],BACK_HITS]}=> "./sm.sr_outer.bh.dat"
  {COUNT[sm,Scene.Plane[sr_inner],BACK_HITS]}=> "./sm.sr_inner.bh.dat"
  {COUNT[sm,Scene.Plane[sr_outer],BACK_CROSSINGS]}=> "./sm.sr_outer.bc.dat"
  {COUNT[sm,Scene.Plane[sr_inner],BACK_CROSSINGS]}=> "./sm.sr_inner.bc.dat"

  {COUNT[sm,Scene.Plane[sr_outer],ALL_HITS]}=> "./sm.sr_outer.ah.dat"
  {COUNT[sm,Scene.Plane[sr_inner],ALL_HITS]}=> "./sm.sr_inner.ah.dat"
  {COUNT[sm,Scene.Plane[sr_outer],ALL_CROSSINGS]}=> "./sm.sr_outer.ac.dat"
  {COUNT[sm,Scene.Plane[sr_inner],ALL_CROSSINGS]}=> "./sm.sr_inner.ac.dat"
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions