get_EUV_spectrum Subroutine

public subroutine get_EUV_spectrum(qunit, fl)

Uses

  • proc~~get_euv_spectrum~~UsesGraph proc~get_euv_spectrum get_EUV_spectrum module~mod_global_parameters mod_global_parameters proc~get_euv_spectrum->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: qunit
type(te_fluid), intent(in) :: fl

Calls

proc~~get_euv_spectrum~~CallsGraph proc~get_euv_spectrum get_EUV_spectrum proc~get_line_info get_line_info proc~get_euv_spectrum->proc~get_line_info proc~get_spectrum get_spectrum proc~get_euv_spectrum->proc~get_spectrum proc~get_spectrum_datresol get_spectrum_datresol proc~get_euv_spectrum->proc~get_spectrum_datresol proc~mpistop mpistop proc~get_euv_spectrum->proc~mpistop proc~get_line_info->proc~mpistop proc~get_spectrum->proc~get_line_info mpi_allreduce mpi_allreduce proc~get_spectrum->mpi_allreduce proc~get_cor_image get_cor_image proc~get_spectrum->proc~get_cor_image proc~init_vectors_cartesian init_vectors_cartesian proc~get_spectrum->proc~init_vectors_cartesian proc~init_vectors_spherical init_vectors_spherical proc~get_spectrum->proc~init_vectors_spherical proc~integrate_spectra_cartesian integrate_spectra_cartesian proc~get_spectrum->proc~integrate_spectra_cartesian proc~output_data output_data proc~get_spectrum->proc~output_data proc~get_spectrum_datresol->proc~mpistop proc~get_spectrum_datresol->mpi_allreduce proc~integrate_spectra_datresol integrate_spectra_datresol proc~get_spectrum_datresol->proc~integrate_spectra_datresol proc~get_spectrum_datresol->proc~output_data mpi_abort mpi_abort proc~mpistop->mpi_abort proc~dot_product_loc dot_product_loc proc~get_cor_image->proc~dot_product_loc proc~cross_product_loc cross_product_loc proc~init_vectors_cartesian->proc~cross_product_loc proc~cartesian_to_spherical cartesian_to_spherical proc~init_vectors_spherical->proc~cartesian_to_spherical proc~init_vectors_spherical->proc~cross_product_loc proc~spherical_to_cartesian spherical_to_cartesian proc~init_vectors_spherical->proc~spherical_to_cartesian proc~integrate_spectra_cartesian->proc~get_line_info proc~integrate_spectra_cartesian->proc~get_cor_image proc~integrate_spectra_cartesian->proc~dot_product_loc proc~get_euv get_EUV proc~integrate_spectra_cartesian->proc~get_euv proc~integrate_spectra_datresol->proc~get_line_info proc~integrate_spectra_datresol->proc~get_euv proc~output_data->proc~mpistop proc~write_image_vticc write_image_vtiCC proc~output_data->proc~write_image_vticc proc~write_image_vtucc write_image_vtuCC proc~output_data->proc~write_image_vtucc dacos dacos proc~cartesian_to_spherical->dacos proc~get_euv->proc~mpistop dcos dcos proc~spherical_to_cartesian->dcos dsin dsin proc~spherical_to_cartesian->dsin proc~write_image_vticc->proc~get_line_info proc~write_image_vtucc->proc~get_line_info

Source Code

    subroutine get_EUV_spectrum(qunit,fl)
      use mod_global_parameters

      integer, intent(in) :: qunit
      type(te_fluid), intent(in) :: fl
      character(20) :: datatype

      integer :: mass
      character (30) :: ion
      double precision :: logTe,lineCent,sigma_PSF,spaceRsl,wlRsl,wslit
      double precision :: xslit,arcsec

      datatype='spectrum_euv'
      arcsec=7.25d7/unit_length
      call get_line_info(spectrum_wl,ion,mass,logTe,lineCent,spaceRsl,wlRsl,&
         sigma_PSF,wslit)

      if (mype==0) print *,&
          '###################################################'
      select case(spectrum_wl)
      case (1354)
        if (mype==0) print *, 'Systhesizing EUV spectrum (observed by IRIS).'
      case (263,264,192,255)
        if (mype==0) print *,&
            'Systhesizing EUV spectrum (observed by Hinode/EIS).'
      case default
        call MPISTOP('Wrong wavelength!')
      end select

      if (spectrum_window_max<=spectrum_window_min) then
        call MPISTOP('Wrong spectrum window!')
      endif

      if (mype==0) write(*,'(a,f8.3,a)') ' Wavelength: ',lineCent,' Angstrom'
      if (mype==0) print *, 'Unit of EUV flux: DN s^-1 pixel^-1'

      if (dat_resolution) then
        if (mype==0) then
          write(*,'(a,f5.3,a,f5.1,a)') ' Supposed pixel: ',wlRsl,&
             ' Angstrom x ',spaceRsl*725.0, ' km'
          print *, 'Unit of wavelength: Angstrom (0.1 nm) '
          if (SI_unit) then
            write(*,'(a,f8.1,a)') ' Unit of length: ',unit_length/1.d6,' Mm'
          else
            write(*,'(a,f8.1,a)') ' Unit of length: ',unit_length/1.d8,' Mm'
          endif
          write(*,'(a,f8.1,a)') ' Supposed width of slit: ',wslit*725.0,' km'
        endif
        call get_spectrum_datresol(qunit,datatype,fl)
      else
        if (mype==0) then
          print *, 'Unit of wavelength: Angstrom (0.1 nm) '
          if (activate_unit_arcsec) then
            write(*,'(a,f5.3,a,f5.1,a)') ' Pixel: ',wlRsl,' Angstrom x ',&
               spaceRsl*725.0, ' km'
            print *, 'Unit of length: arcsec (~725 km)'
            write(*,'(a,f8.1,a)') ' Location of slit: xI1 = ',location_slit,&
               ' arcsec'
            write(*,'(a,f8.1,a)') ' Width of slit: ',wslit,' arcsec'
          else
            if (SI_unit) then
              if (mype==0) write(*,'(a,f8.1,a)') ' Unit of length: ',&
                 unit_length/1.d6,' Mm'
            else
              if (mype==0) write(*,'(a,f8.1,a)') ' Unit of length: ',&
                 unit_length/1.d8,' Mm'
            endif
            write(*,'(a,f8.1,a)') ' Location of slit: xI1 = ',location_slit,&
               ' Unit_length'
            write(*,'(a,f8.1,a)') ' Width of slit: ',wslit*725.d0,' km'
          endif
        endif
        if (mype==0) print *, 'Direction of the slit: parallel to xI2 vector'
        if (coordinate==cartesian .or. coordinate==spherical) then
          call get_spectrum(qunit,datatype,fl)
        else
          call MPISTOP&
("EUV spectrum synthesis: support for sperical coordinates is to be added!")
        endif
      endif

      if (mype==0) print *,&
          '###################################################'

    end subroutine get_EUV_spectrum