From 2fc17a406c9fb4c08ce0a2bda4471299c15f74cc Mon Sep 17 00:00:00 2001 From: Andrew Reeves Date: Fri, 19 Dec 2025 10:33:57 +0000 Subject: [PATCH] add method to add new columns to phase screens --- aotools/turbulence/infinitephasescreen.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/aotools/turbulence/infinitephasescreen.py b/aotools/turbulence/infinitephasescreen.py index 53ae6df..eeda4da 100644 --- a/aotools/turbulence/infinitephasescreen.py +++ b/aotools/turbulence/infinitephasescreen.py @@ -193,7 +193,7 @@ def get_new_row(self): new_row.shape = (1, self.nx_size) return new_row - + def add_row(self): """ Adds a new row to the phase screen and removes old ones. @@ -205,6 +205,23 @@ def add_row(self): return self.scrn + def get_new_col(self): + random_data = self._R.normal(0, 1, size=self.nx_size) + + stencil_data = self._scrn.T[(self.stencil_coords[:, 0], self.stencil_coords[:, 1])] + new_row = self.A_mat.dot(stencil_data) + self.B_mat.dot(random_data) + + new_row.shape = (1, self.nx_size) + return new_row + + def add_col(self): + new_col = self.get_new_col() + self._scrn = numpy.append(new_col.T, self._scrn, axis=1)[:self.nx_size, :self.stencil_length] + return self.scrn + + + + @property def scrn(self): """