|
5 | 5 | from functools import partial |
6 | 6 | from essos.coils import Curves, Coils |
7 | 7 | from scipy.optimize import least_squares, minimize |
8 | | -from essos.objective_functions import (loss_optimize_coils_for_particle_confinement, |
9 | | - loss_BdotN, loss_coils_for_nearaxis, loss_coils_and_nearaxis, |
10 | | - new_nearaxis_from_x_and_old_nearaxis) |
| 8 | +from essos.fields import near_axis |
| 9 | + |
| 10 | +def new_nearaxis_from_x_and_old_nearaxis(new_field_nearaxis_x, field_nearaxis): |
| 11 | + len_rc = len(field_nearaxis.rc) |
| 12 | + len_zs = len(field_nearaxis.zs) |
| 13 | + # # keeping the first rc and zs the same |
| 14 | + # new_field_nearaxis_rc = jnp.concatenate((jnp.array([field_nearaxis.rc[0]]),new_field_nearaxis_x[:len_rc][1:])) |
| 15 | + # new_field_nearaxis_zs = jnp.concatenate((jnp.array([field_nearaxis.zs[0]]),new_field_nearaxis_x[len_rc:len_rc+len_zs][1:])) |
| 16 | + new_field_nearaxis_rc = new_field_nearaxis_x[:len_rc] |
| 17 | + new_field_nearaxis_zs = new_field_nearaxis_x[len_rc:len_rc+len_zs] |
| 18 | + new_field_nearaxis_etabar = new_field_nearaxis_x[-1] |
| 19 | + |
| 20 | + new_field_nearaxis = near_axis(rc=new_field_nearaxis_rc, zs=new_field_nearaxis_zs, etabar=new_field_nearaxis_etabar, |
| 21 | + B0=field_nearaxis.B0, sigma0=field_nearaxis.sigma0, I2=field_nearaxis.I2, |
| 22 | + nphi=field_nearaxis.nphi, spsi=field_nearaxis.spsi, sG=field_nearaxis.sG, nfp=field_nearaxis.nfp) |
| 23 | + return new_field_nearaxis |
11 | 24 |
|
12 | 25 | def optimize_loss_function(func, initial_dofs, coils, tolerance_optimization=1e-4, maximum_function_evaluations=30, **kwargs): |
13 | 26 | len_dofs_curves = len(jnp.ravel(coils.dofs_curves)) |
@@ -48,34 +61,3 @@ def optimize_loss_function(func, initial_dofs, coils, tolerance_optimization=1e- |
48 | 61 | except Exception as e: |
49 | 62 | jax.debug.print("Error: {}", e) |
50 | 63 | return None |
51 | | - |
52 | | -def optimize_coils_for_particle_confinement(coils, particles, target_B_on_axis=5.7, max_coil_length=22, model='GuidingCenter', |
53 | | - maxtime=5e-6, num_steps=500, trace_tolerance=1e-5, tolerance_optimization=1e-4, |
54 | | - maximum_function_evaluations=30, max_coil_curvature=0.1): |
55 | | - return optimize_loss_function(loss_optimize_coils_for_particle_confinement, initial_dofs=coils.x, coils=coils, |
56 | | - tolerance_optimization=tolerance_optimization, particles=particles, |
57 | | - maximum_function_evaluations=maximum_function_evaluations, max_coil_curvature=max_coil_curvature, |
58 | | - target_B_on_axis=target_B_on_axis, max_coil_length=max_coil_length, model=model, |
59 | | - maxtime=maxtime, num_steps=num_steps, trace_tolerance=trace_tolerance) |
60 | | - |
61 | | -def optimize_coils_for_vmec_surface(vmec, coils, tolerance_optimization=1e-10, |
62 | | - maximum_function_evaluations=30, |
63 | | - max_coil_length=42, max_coil_curvature=0.1): |
64 | | - return optimize_loss_function(loss_BdotN, initial_dofs=coils.x, coils=coils, tolerance_optimization=tolerance_optimization, |
65 | | - maximum_function_evaluations=maximum_function_evaluations, vmec=vmec, |
66 | | - max_coil_length=max_coil_length, max_coil_curvature=max_coil_curvature,) |
67 | | - |
68 | | -def optimize_coils_for_nearaxis(field_nearaxis, coils, tolerance_optimization=1e-10, |
69 | | - maximum_function_evaluations=30, |
70 | | - max_coil_length=42, max_coil_curvature=0.1): |
71 | | - return optimize_loss_function(loss_coils_for_nearaxis, initial_dofs=coils.x, coils=coils, tolerance_optimization=tolerance_optimization, |
72 | | - maximum_function_evaluations=maximum_function_evaluations, field_nearaxis=field_nearaxis, |
73 | | - max_coil_length=max_coil_length, max_coil_curvature=max_coil_curvature,) |
74 | | - |
75 | | -def optimize_coils_and_nearaxis(field_nearaxis, coils, tolerance_optimization=1e-10, |
76 | | - maximum_function_evaluations=30, |
77 | | - max_coil_length=42, max_coil_curvature=0.1): |
78 | | - initial_dofs = jnp.concatenate((coils.x, field_nearaxis.x)) |
79 | | - return optimize_loss_function(loss_coils_and_nearaxis, initial_dofs=initial_dofs, coils=coils, tolerance_optimization=tolerance_optimization, |
80 | | - maximum_function_evaluations=maximum_function_evaluations, field_nearaxis=field_nearaxis, |
81 | | - max_coil_length=max_coil_length, max_coil_curvature=max_coil_curvature,) |
0 commit comments