In Rhino: Build a surface using the edges of the trimmed surface. Patch with the created surface as the starting surface and the trimmed surface as the target. Note that the surfaces can be drastically simplified while retaining accuracy.
To create the starting surface:
EdgeSrf
using the trimmed edges as the input.
FitSrf
to simplify the new surface.
To create points to fit the surface to:
Mesh
with the trimmed surface as the input.
ExtractPt
from the mesh. Do not use ExtractPt from the surface. The result is the control points of the surface which in general are not on the surface.
Fit the starting surface to the trimmed surface.
Patch
Select the points from the mesh to fit to a surface through.
Select Starting Surface option
Select the edge surface
Preserve edges option
Complete patch
PointDeviation
to check if the new surface is close enough to the original surface.