Skip to content

GEOPY-2773: Airborne FEM coaxial do not rotate transmitter, and ppm normalization needs to be ajusted#141

Merged
domfournier merged 4 commits intorelease/GA_4.8from
GEOPY-2773
May 1, 2026
Merged

GEOPY-2773: Airborne FEM coaxial do not rotate transmitter, and ppm normalization needs to be ajusted#141
domfournier merged 4 commits intorelease/GA_4.8from
GEOPY-2773

Conversation

@domfournier
Copy link
Copy Markdown

@domfournier domfournier commented May 1, 2026

GEOPY-2773 - Airborne FEM coaxial do not rotate transmitter, and ppm normalization needs to be ajusted

Copilot AI review requested due to automatic review settings May 1, 2026 02:36
@github-actions github-actions Bot changed the title Geopy 2773 GEOPY-2773: Airborne FEM coaxial do not rotate transmitter, and ppm normalization needs to be ajusted May 1, 2026
@domfournier domfournier changed the base branch from develop to release/GA_4.8 May 1, 2026 02:37
@domfournier domfournier merged commit 012a884 into release/GA_4.8 May 1, 2026
14 checks passed
@domfournier domfournier deleted the GEOPY-2773 branch May 1, 2026 02:38
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates GeoH5 saving directives and Dask-based sensitivity computation to better support configurable log filenames and revised parallel chunking behavior.

Changes:

  • Clarify directive docstrings for predicted data and sensitivity outputs.
  • Parameterize GeoH5-attached log file naming via a base_name in SaveLogFilesGeoH5.
  • Adjust Dask chunk splitting / parallel block evaluation logic in FDEM sensitivity computation and utilities.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 5 comments.

File Description
simpeg/directives/_save_geoh5.py Updates log-file saving/attachment behavior and improves directive docstrings.
simpeg/dask/utils.py Replaces cpu_count() usage in block re-splitting with thread_count.
simpeg/dask/electromagnetics/frequency_domain/simulation.py Refactors parallel sensitivity-row computation and thread-count handling for Dask execution.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread simpeg/dask/utils.py
Comment on lines 77 to +83
# # Re-split over cpu_count if too few blocks
if len(blocks) < thread_count and optimize:
flatten_blocks = []
for block in blocks:
flatten_blocks += block

chunks = np.array_split(np.arange(len(flatten_blocks)), cpu_count())
chunks = np.array_split(np.arange(len(flatten_blocks)), thread_count)
Comment on lines +69 to +76
for ind in indices:
if Ainv_deriv_u.ndim == 1:
deriv_columns = Ainv_deriv_u[:, np.newaxis]
else:
deriv_indices = np.arange(
count, count + blocks_receiver_derivs[ind].shape[1]
)
deriv_columns = Ainv_deriv_u[:, deriv_indices]
Comment on lines +370 to 388
n_rows = np.sum([addresses[ind][1][2] for ind in indices])
delayed_eval = delayed(compute_rows)
block_delayed.append(
array.from_delayed(
delayed_eval(
simulation,
ATinvdf_duT,
np.arange(count, count + n_cols),
count,
blocks_receiver_derivs,
Zero(),
fields_array,
address,
addresses,
Jmatrix,
indices,
),
dtype=np.float32,
shape=(n_rows, m_size),
)
)
)
)
else:
n_rows = np.sum([addresses[ind][1][2] for ind in indices])
compute_row_size = np.ceil(self.max_chunk_size / (A_i.A.shape[0] * 32.0 * 1e-6))
blocks = get_parallel_blocks(
self.survey.source_list, compute_row_size, optimize=True
self.survey.source_list, compute_row_size, optimize=False
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 this pull request may close these issues.

2 participants