subroutine init_universe (u) use cesrv_struct use cesrv_interface use sim_utils implicit none type (universe_struct), target :: u integer i, jmax, vnumbr, ios, n_last character(12) db_group_name(50) character(200) infile namelist / db_groups / db_group_name ! do i = 0, 120 u%but_to_mode(i)%mat = 0 enddo ! data inits u%main_title1 = ' ' u%main_title2 = ' ' do i = lbound(u%data, 1), ubound(u%data, 1) nullify(u%data(i)%d1) enddo do i = lbound(u%var, 1), ubound(u%var, 1) nullify(u%var(i)%model) enddo u%data_is_from_model = .false. u%data(:)%good_dat = .false. nullify (u%dm_dv) u%beta%name = 'Beta' u%beta%x%name = 'Beta_X'; u%beta%y%name = 'Beta_Y' u%beta%route_name = ''; u%beta%date = ''; u%beta%file_name = '' u%q2x%name = '2Qx' u%q2x%a_in%name = '2Qx_Ain'; u%q2x%a_out%name = '2Qx_Aout' u%q2x%route_name = ''; u%q2x%date = ''; u%q2x%file_name = '' u%q2y%name = '2Qy' u%q2y%a_in%name = '2Qy_Ain'; u%q2y%a_out%name = '2Qy_Aout' u%q2y%route_name = ''; u%q2y%date = ''; u%q2y%file_name = '' u%qx_plus_qy%name = 'Qx+Qy' u%qx_plus_qy%a_in%name = 'Qx+Qy_Ain'; u%qx_plus_qy%a_out%name = 'Qx+Qy_Aout' u%qx_plus_qy%route_name = ''; u%qx_plus_qy%date = ''; u%qx_plus_qy%file_name = '' u%qx_minus_qy%name = 'Qx-Qy' u%qx_minus_qy%a_in%name = 'Qx-Qy_Ain'; u%qx_minus_qy%a_out%name = 'Qx-Qy_Aout' u%qx_minus_qy%route_name = ''; u%qx_minus_qy%date = ''; u%qx_minus_qy%file_name = '' u%phase%name = 'Phase'; u%phase%x%name = 'Phase_X'; u%phase%y%name = 'Phase_Y' u%phase%route_name = ''; u%phase%date = ''; u%phase%file_name = '' u%orbit%name = 'Orbit'; u%orbit%x%name = 'Orbit_X'; u%orbit%y%name = 'Orbit_Y' u%orbit%route_name = ''; u%orbit%date = ''; u%orbit%file_name = '' u%e_xray%name = 'E_XRay' u%e_xray%x%name = 'E_XRay_X'; u%e_xray%y%name = 'E_XRay_Y' u%e_xray%route_name = ''; u%e_xray%date = ''; u%e_xray%file_name = '' u%p_xray%name = 'P_XRay' u%p_xray%x%name = 'P_XRay_X'; u%p_xray%y%name = 'P_XRay_Y' u%p_xray%route_name = ''; u%p_xray%date = ''; u%p_xray%file_name = '' u%eta%name = 'Eta'; u%eta%x%name = 'Eta_X'; u%eta%y%name = 'Eta_Y' u%eta%route_name = ''; u%eta%date = ''; u%eta%file_name = '' u%ac_eta%name = 'AC_Eta' u%ac_eta%x%name = 'AC_Eta_X'; u%ac_eta%y%name = 'AC_Eta_Y' u%ac_eta%route_name = ''; u%ac_eta%date = ''; u%ac_eta%file_name = '' u%ac_eta_yx%name = 'AC_Eta_XY' u%ac_eta_yx%yxcos%name = 'AC_Eta_XYcos'; u%ac_eta_yx%yxsin%name = 'AC_Eta_XYsin' u%ac_eta_yx%route_name = ''; u%ac_eta_yx%date = ''; u%ac_eta_yx%file_name = '' u%ac_eta_c12%name = 'AC_Eta_C12' u%ac_eta_c12%a%name = 'AC_Eta_C12_A'; u%ac_eta_c12%b%name = 'AC_Eta_C12_B' u%ac_eta_c12%route_name = ''; u%ac_eta_c12%date = ''; u%ac_eta_c12%file_name = '' u%mode_eta%name = 'Mode_eta'; u%mode_eta%x%name = 'Mode_eta_X'; u%mode_eta%y%name = 'Mode_eta_Y' u%mode_eta%route_name = ''; u%mode_eta%date = ''; u%mode_eta%file_name = '' u%tune%name = 'Tune'; u%tune%x%name = 'Tune_X' u%tune%y%name = 'Tune_Y'; u%tune%z%name = 'Tune_Z' u%tune%route_name = ''; u%tune%date = ''; u%tune%file_name = '' u%spline_beta%name = 'Spline Fit: Beta' u%spline_beta%x%name = 'Beta_X (Spline)' u%spline_beta%y%name = 'Beta_Y (Spline)' u%spline_beta%route_name = ''; u%spline_beta%date = ''; u%spline_beta%file_name = '' u%cbar%name = 'Cbar'; u%cbar%m11%name = 'Cbar_11'; u%cbar%m12%name = 'Cbar_12' u%cbar%m21%name = 'Cbar_21'; u%cbar%m22%name = 'Cbar_22' u%cbar%route_name = ''; u%cbar%date = ''; u%cbar%file_name = '' u%cmat_a%name = 'Cmat_A' u%cmat_a%m12%name = 'Cmat_A12' u%cmat_a%m22%name = 'Cmat_A22' u%cmat_a%route_name = ''; u%cmat_a%date = ''; u%cmat_a%file_name = '' u%cmat_b%name = 'Cmat_B' u%cmat_b%m12%name = 'Cmat_B12' u%cmat_b%m11%name = 'Cmat_B11' u%cmat_b%route_name = ''; u%cmat_b%date = ''; u%cmat_b%file_name = '' u%energy_data%name = 'dE/E'; u%energy_data%d1%name = 'dE/E' u%energy_data%route_name = ''; u%energy_data%date = ''; u%energy_data%file_name = '' u%chrom%name = 'Chromaticity' u%chrom%x%name = 'Chrom X'; u%chrom%y%name = 'Chrom Y' u%chrom%route_name = ''; u%chrom%date = ''; u%chrom%file_name = '' u%x_fft%name = 'X_FFT' u%x_fft%route_name = ''; u%x_fft%date = ''; u%x_fft%file_name = '' u%y_fft%name = 'Y_FFT' u%y_fft%route_name = ''; u%y_fft%date = ''; u%y_fft%file_name = '' ! Set up the links between the u%data array and the u%beta%x, etc structures. ! If the following is changed consider changing the cesrv_version number. n_last = 0 call register_data (u, x_fft_data$, amp_plane$, u%x_fft, u%x_fft%amp, u%data, 1, 1, n_last) call register_data (u, x_fft_data$, phase_plane$, u%x_fft, u%x_fft%phase, u%data, 1, 1, n_last) call register_data (u, y_fft_data$, amp_plane$, u%y_fft, u%y_fft%amp, u%data, 1, 1, n_last) call register_data (u, y_fft_data$, phase_plane$, u%y_fft, u%y_fft%phase, u%data, 1, 1, n_last) call register_data (u, q2x_data$, in_plane$, u%q2x, u%q2x%a_in, u%data, 0, 120, n_last) call register_data (u, q2x_data$, out_plane$, u%q2x, u%q2x%a_out, u%data, 0, 120, n_last) call register_data (u, q2y_data$, in_plane$, u%q2y, u%q2y%a_in, u%data, 0, 120, n_last) call register_data (u, q2y_data$, out_plane$, u%q2y, u%q2y%a_out, u%data, 0, 120, n_last) call register_data (u, qx_plus_qy_data$, in_plane$, u%qx_plus_qy, u%qx_plus_qy%a_in, u%data, 0, 120, n_last) call register_data (u, qx_plus_qy_data$, out_plane$, u%qx_plus_qy, u%qx_plus_qy%a_out, u%data, 0, 120, n_last) call register_data (u, qx_minus_qy_data$, in_plane$, u%qx_minus_qy, u%qx_minus_qy%a_in, u%data, 0, 120, n_last) call register_data (u, qx_minus_qy_data$, out_plane$, u%qx_minus_qy, u%qx_minus_qy%a_out, u%data, 0, 120, n_last) call register_data (u, beta_data$, x_plane$, u%beta, u%beta%x, u%data, 0, 120, n_last) call register_data (u, beta_data$, y_plane$, u%beta, u%beta%y, u%data, 0, 120, n_last) call register_data (u, phase_data$, x_plane$, u%phase, u%phase%x, u%data, 0, 120, n_last) call register_data (u, phase_data$, y_plane$, u%phase, u%phase%y, u%data, 0, 120, n_last) call register_data (u, tune_data$, x_plane$, u%tune, u%tune%x, u%data, 1, 1, n_last) call register_data (u, tune_data$, y_plane$, u%tune, u%tune%y, u%data, 1, 1, n_last) call register_data (u, tune_data$, z_plane$, u%tune, u%tune%z, u%data, 1, 1, n_last) call register_data (u, orbit_data$, x_plane$, u%orbit, u%orbit%x, u%data, 0, 120, n_last) call register_data (u, orbit_data$, y_plane$, u%orbit, u%orbit%y, u%data, 0, 120, n_last) call register_data (u, e_xray_data$, x_plane$, u%e_xray, u%e_xray%x, u%data, 1, 10, n_last) call register_data (u, e_xray_data$, y_plane$, u%e_xray, u%e_xray%y, u%data, 1, 10, n_last) call register_data (u, p_xray_data$, x_plane$, u%p_xray, u%p_xray%x, u%data, 1, 10, n_last) call register_data (u, p_xray_data$, y_plane$, u%p_xray, u%p_xray%y, u%data, 1, 10, n_last) call register_data (u, chrom_data$, x_plane$, u%chrom, u%chrom%x, u%data, 1, 1, n_last) call register_data (u, chrom_data$, y_plane$, u%chrom, u%chrom%y, u%data, 1, 1, n_last) call register_data (u, eta_data$, x_plane$, u%eta, u%eta%x, u%data, 0, 120, n_last) call register_data (u, eta_data$, y_plane$, u%eta, u%eta%y, u%data, 0, 120, n_last) call register_data (u, ac_eta_data$, x_plane$, u%ac_eta, u%ac_eta%x, u%data, 0, 120, n_last) call register_data (u, ac_eta_data$, y_plane$, u%ac_eta, u%ac_eta%y, u%data, 0, 120, n_last) call register_data (u, ac_eta_c12$, a_plane$, u%ac_eta_c12, u%ac_eta_c12%a, u%data, 0, 120, n_last) call register_data (u, ac_eta_c12$, b_plane$, u%ac_eta_c12, u%ac_eta_c12%b, u%data, 0, 120, n_last) call register_data (u, ac_eta_yx_sincos$, cos$, u%ac_eta_yx, u%ac_eta_yx%yxcos, u%data, 0, 120, n_last) call register_data (u, ac_eta_yx_sincos$, sin$, u%ac_eta_yx, u%ac_eta_yx%yxsin, u%data, 0, 120, n_last) call register_data (u, mode_eta_data$, x_plane$, u%mode_eta, u%mode_eta%x, u%data, 0, 120, n_last) call register_data (u, mode_eta_data$, y_plane$, u%mode_eta, u%mode_eta%y, u%data, 0, 120, n_last) call register_data (u, cbar_data$, m11$, u%cbar, u%cbar%m11, u%data, 0, 120, n_last) call register_data (u, cbar_data$, m12$, u%cbar, u%cbar%m12, u%data, 0, 120, n_last) call register_data (u, cbar_data$, m21$, u%cbar, u%cbar%m21, u%data, 0, 120, n_last) call register_data (u, cbar_data$, m22$, u%cbar, u%cbar%m22, u%data, 0, 120, n_last) call register_data (u, cmat_a_data$, m12$, u%cmat_a, u%cmat_a%m12, u%data, 0, 120, n_last) call register_data (u, cmat_a_data$, m22$, u%cmat_a, u%cmat_a%m22, u%data, 0, 120, n_last) call register_data (u, cmat_b_data$, m11$, u%cmat_b, u%cmat_b%m11, u%data, 0, 120, n_last) call register_data (u, cmat_b_data$, m12$, u%cmat_b, u%cmat_b%m12, u%data, 0, 120, n_last) call register_data (u, spline_data$, x_plane$, u%spline_beta, u%spline_beta%x, u%data, 0, 120, n_last) call register_data (u, spline_data$, y_plane$, u%spline_beta, u%spline_beta%y, u%data, 0, 120, n_last) call register_data (u, energy_data$, null_plane$, u%energy_data, u%energy_data%d1, u%data, 0, 120, n_last) u%tune%ew_encode = .false. u%energy_data%ew_encode = .false. u%chrom%ew_encode = .false. u%e_xray%ew_encode = .false. u%p_xray%ew_encode = .false. !----------------------------------------------------- ! variable inits u%skew_quad_k1%name = 'Skew Quad K1'; u%skew_quad_k1%short_name = 'Skew_K1' u%quad_k1%name = 'Quad K1'; u%quad_k1%short_name = 'Quad K1' u%custom_var%name = 'Custom Variables'; u%custom_var%short_name = 'Custom' u%sex_k2%name = 'Sex K2'; u%sex_k2%short_name = 'Sex_K2' u%skew_sex_k2%name = 'Skew Sex K2'; u%skew_sex_k2%short_name = 'Sk_Sex' u%hsteer_kick%name = 'Horiz Steering'; u%hsteer_kick%short_name = 'Horiz' u%vsteer_kick%name = 'Vert Steering'; u%vsteer_kick%short_name = 'Vert' u%hsep_kick%name = 'H_Separator'; u%hsep_kick%short_name = 'H_Sep' u%init_orb%name = 'Initial Orbit'; u%init_orb%short_name = 'Ini_Orb' u%energy_var%name = 'Beam Energy'; u%energy_var%short_name = 'Energy' u%bpm_tilt%name = 'BPM_Tilt'; u%bpm_tilt%short_name = 'BPM_Tilt' u%x_kick_quad%name = 'X Kick Quad'; u%x_kick_quad%short_name = 'Qd_X Kick' u%y_kick_quad%name = 'Y Kick Quad'; u%y_kick_quad%short_name = 'Qd_Y_Kick' u%x_amp_shake%name = 'X Amp Shake'; u%x_amp_shake%short_name = 'X_Amp_Shk' u%y_amp_shake%name = 'Y Amp Shake'; u%y_amp_shake%short_name = 'Y_Amp_Shk' ! set up the links between the u%var array and the u%quad_k1, etc. structures. n_last = 0 call register_var (x_kick_quad$, u%x_kick_quad, bmad_units$, u%var, 0, 120, n_last) call register_var (y_kick_quad$, u%y_kick_quad, bmad_units$, u%var, 0, 120, n_last) call register_var (quad_k1$, u%quad_k1, bmad_units$, u%var, 0, 120, n_last) call register_var (sex_k2$, u%sex_k2, bmad_units$, u%var, 0, 120, n_last) call register_var (hsteer_kick$, u%hsteer_kick, cu_units$, u%var, 0, 120, n_last) call register_var (vsteer_kick$, u%vsteer_kick, cu_units$, u%var, 0, 120, n_last) call register_var (hsep_kick$, u%hsep_kick, bmad_units$, u%var, 1, n_sep_maxx, n_last) call register_var (custom_var$, u%custom_var, bmad_units$, u%var, 1, n_custom_maxx, n_last) call register_var (skew_quad_k1$, u%skew_quad_k1, bmad_units$, u%var, 0, 120, n_last) call register_var (energy_var$, u%energy_var, bmad_units$, u%var, 1, 1, n_last) call register_var (skew_sex_k2$, u%skew_sex_k2, bmad_units$, u%var, 1, n_skew_sex_maxx, n_last) call register_var (oct_k3$, u%oct_k3, bmad_units$, u%var, 1, n_oct_maxx, n_last) call register_var (init_orb$, u%init_orb, bmad_units$, u%var, 1, 6, n_last) call register_var (bpm_tilt$, u%bpm_tilt, bmad_units$, u%var, 0, 120, n_last) call register_var (x_amp_shake$, u%x_amp_shake, bmad_units$, u%var, 0, 1, n_last) call register_var (y_amp_shake$, u%y_amp_shake, bmad_units$, u%var, 0, 1, n_last) u%var%cu_saved = 0 u%var%cu_golden = 0 do i = 1, size(u%var) u%var(i)%ix_var = i enddo !--------------------------------------------------------------- ! For groups u%db_group(1)%v1 => u%group1 u%db_group(2)%v1 => u%group2 u%db_group(3)%v1 => u%group3 u%db_group(4)%v1 => u%group4 u%db_group(5)%v1 => u%group5 u%db_group(6)%v1 => u%group6 u%db_group(7)%v1 => u%group7 u%db_group(8)%v1 => u%group8 u%db_group(9)%v1 => u%group9 u%db_group(10)%v1 => u%group10 u%db_group(11)%v1 => u%group11 u%db_group(12)%v1 => u%group12 u%db_group(13)%v1 => u%group13 u%db_group(14)%v1 => u%group14 u%db_group(15)%v1 => u%group15 u%db_group(16)%v1 => u%group16 u%db_group(17)%v1 => u%group17 u%db_group(18)%v1 => u%group18 u%db_group(19)%v1 => u%group19 u%db_group(20)%v1 => u%group20 u%db_group(21)%v1 => u%group21 u%db_group(22)%v1 => u%group22 u%db_group(23)%v1 => u%group23 u%db_group(24)%v1 => u%group24 u%db_group(25)%v1 => u%group25 call fullfilename('$CESR_ONLINE/acc_control/program_info/cesrv/init/db_groups.list', infile) open (1, file = infile, status = 'old', iostat = ios) if (ios /= 0) then print *, 'ERROR IN INIT_COMMON_DATA: CANNOT OPEN: ', infile return endif db_group_name = '' read (1, nml = db_groups) close (1) do i = 1, n_db_group_maxx if (db_group_name(i) == '') exit jmax = vnumbr (db_group_name(i)) call register_var (db_group$, u%db_group(i)%v1, cu_units$, u%var, 1, jmax, n_last) u%db_group(i)%v1%name = db_group_name(i) enddo logic%n_db_group_max = i-1 !--------------------------------------------------------------- ! graph stuff. Must be consistant with init_plotting call data_plot_init (u%x_fft, u%x_fft%amp, u%x_fft%phase, gang_scale = .false.) call data_plot_init (u%y_fft, u%y_fft%amp, u%y_fft%phase, gang_scale = .false.) call data_plot_init (u%q2x, u%q2x%a_in, u%q2x%a_out) call data_plot_init (u%q2y, u%q2y%a_in, u%q2y%a_out) call data_plot_init (u%qx_plus_qy, u%qx_plus_qy%a_in, u%qx_plus_qy%a_out) call data_plot_init (u%qx_minus_qy, u%qx_minus_qy%a_in, u%qx_minus_qy%a_out) call data_plot_init (u%beta, u%beta%x, u%beta%y) call data_plot_init (u%phase, u%phase%x, u%phase%y) call data_plot_init (u%orbit, u%orbit%x, u%orbit%y) call data_plot_init (u%e_xray, u%e_xray%x, u%e_xray%y) call data_plot_init (u%p_xray, u%p_xray%x, u%p_xray%y) call data_plot_init (u%energy_data, u%energy_data%d1) call data_plot_init (u%eta, u%eta%x, u%eta%y, gang_scale = .false.) call data_plot_init (u%mode_eta, u%mode_eta%x, u%mode_eta%y, gang_scale = .false.) call data_plot_init (u%ac_eta, u%ac_eta%x, u%ac_eta%y, gang_scale = .false.) call data_plot_init (u%ac_eta_c12, u%ac_eta_c12%a, u%ac_eta_c12%b, gang_scale = .false.) call data_plot_init (u%ac_eta_yx, u%ac_eta_yx%yxsin, u%ac_eta_yx%yxcos, gang_scale = .false.) call data_plot_init (u%spline_beta, u%spline_beta%x, u%spline_beta%y) call data_plot_init (u%cmat_a, u%cmat_a%m22, u%cmat_a%m12) call data_plot_init (u%cmat_b, u%cmat_b%m11, u%cmat_b%m12) call data_plot_init (u%cbar, u%cbar%m11, u%cbar%m12, u%cbar%m22) ! u%wave%wave_what = '' u%wave%p2%plot1%p2 => u%wave%p2 u%wave%p2%plot2%p2 => u%wave%p2 u%wave%p2%plot3%p2 => u%wave%p2 u%wave%ix_a1 = 10; u%wave%ix_a2 = 20 u%wave%ix_b1 = 80; u%wave%ix_b2 = 90 end subroutine