This can lead to ~ 10% performance improvement interms of compute and about over 100% performance improvement interms of storage.
10% compute improvement - the predictor and corrector routines are called on elements where domain type is not the current domain type.
> 100% storage improvement - You do not have to store a large number of zeros.
Currently, the fields and derivatives of field are created for every instance of a domain. In locations where the domain type is not current domain type the field is always 0. However, The ideal way of doing this would be to have a singular field type and every domain gets a subview of the original field. There are several challenges because of templated mediums:
Creating a global field based on the number of medium present
Distributing those global fields to individual domains (kokkos::subviews)
Mapping local field to global field domains (required for coupling)
This can lead to ~ 10% performance improvement interms of compute and about over 100% performance improvement interms of storage.
Currently, the fields and derivatives of field are created for every instance of a domain. In locations where the domain type is not current domain type the field is always 0. However, The ideal way of doing this would be to have a singular field type and every domain gets a subview of the original field. There are several challenges because of templated mediums: