| /* PR target/7784 */ |
| /* Originator: Peter van Hoof <p.van-hoof@qub.ac.uk> */ |
| /* { dg-do compile { target sparc-*-* } } */ |
| /* { dg-options "-O2 -mcpu=ultrasparc" } */ |
| |
| typedef struct |
| { |
| float EnergyErg; |
| float ots; |
| } EmLine; |
| |
| extern const int ipH_LIKE ; |
| extern const int ipHYDROGEN ; |
| extern const int ipH1s; |
| extern const int ipH2s; |
| extern const int ipH2p; |
| |
| extern EmLine ****EmisLines; |
| |
| typedef struct |
| { |
| long n; |
| long s; |
| long l; |
| } Elevels; |
| |
| extern struct t_iso |
| { |
| float ***Pop2Ion; |
| long int numLevels[2][30L]; |
| } iso; |
| |
| extern struct t_LineSave |
| { |
| long int nsum; |
| long int ndsum; |
| long int nComment; |
| long int npxdd; |
| long int ipass; |
| char chHoldComments[10][200]; |
| } LineSave; |
| |
| extern struct t_hydro |
| { |
| int lgHydEmiss; |
| float **pestrk ; |
| } hydro; |
| |
| extern struct t_dense |
| { |
| double DensityLaw[10]; |
| float frad[500]; |
| float fhden[500]; |
| float den0; |
| double eden; |
| } dense; |
| |
| extern struct t_abund |
| { |
| float xIonFracs[30L +3][30L +1]; |
| } abund; |
| |
| extern struct t_CaseBHS |
| { |
| long int nDensity[2][8] , ntemp[2][8] , ncut[2][8] ; |
| int lgHCaseBOK[2][8]; |
| } CaseBHS ; |
| |
| extern struct t_smbeta |
| { |
| float SimHBeta, |
| cn4861, |
| cn1216, |
| sv4861, |
| sv1216; |
| } smbeta; |
| |
| extern struct t_phycon |
| { |
| float te; |
| } phycon; |
| |
| |
| extern struct t_sphere |
| { |
| int lgSphere; |
| float covgeo; |
| } sphere; |
| |
| void linadd(double xInten, float wavelength, char *chLab, char chInfo); |
| |
| extern struct t_radiusVar |
| { |
| int lgDrNeg; |
| double dVeff; |
| } radius; |
| |
| void lines_hydro(void) |
| { |
| long int i, nelem, ipHi, ipLo; |
| double hbetab, em , EmisFac, pump; |
| char chLabel[5]; |
| |
| linadd(abund.xIonFracs[ipHYDROGEN][1]*iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][3]*hydro.pestrk[3][2]*3.025e-12, 6563,"Strk",'i'); |
| |
| linadd(abund.xIonFracs[ipHYDROGEN][1]*iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][4]*hydro.pestrk[4][2]*4.084e-12, 4861,"Strk",'i'); |
| |
| linadd(abund.xIonFracs[ipHYDROGEN][1]*iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][4]*hydro.pestrk[4][3]*1.059e-12, 18751,"Strk",'i'); |
| |
| linadd(abund.xIonFracs[ipHYDROGEN][1]*iso.Pop2Ion[ipH_LIKE][ipHYDROGEN][5]*hydro.pestrk[5][4]*4.900e-13, 40512,"Strk",'i'); |
| |
| ((void)((LineSave.ipass <1 || EmisLines[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].ots>= 0.) || (__assert("LineSave.ipass <1 || EmisLines[ipH_LIKE][ipHYDROGEN][ipH2p][ipH1s].ots>= 0.", "lines_hydro.c", 118), 0))); |
| |
| linadd(EmisLines[ipH_LIKE][ipHYDROGEN][3][ipH2s].ots*EmisLines[ipH_LIKE][ipHYDROGEN][3][ipH2s].EnergyErg, 6563,"Dest",'i'); |
| |
| linadd(EmisLines[ipH_LIKE][ipHYDROGEN][5][4].ots*EmisLines[ipH_LIKE][ipHYDROGEN][5][4].EnergyErg,40516, "Dest",'i'); |
| |
| smbeta.SimHBeta = smbeta.SimHBeta/(float)radius.dVeff*sphere.covgeo; |
| |
| linadd(smbeta.SimHBeta,4861,"Q(H)",'i'); |
| |
| smbeta.SimHBeta = smbeta.SimHBeta*(float)radius.dVeff/sphere.covgeo; |
| |
| for( nelem=0; nelem < 30L; nelem++ ) |
| { |
| int iCase; |
| for( iCase=0; iCase<2; ++iCase ) |
| { |
| char chAB[2]={'A','B'}; |
| char chLab[5]="Ca "; |
| |
| for( ipLo=1+iCase; ipLo<(((6)<(iso.numLevels[ipH_LIKE][nelem])) ? (6) : (5)); ++ipLo ) |
| { |
| for( ipHi=ipLo+1; ipHi< (((ipLo+5)<(iso.numLevels[ipH_LIKE][nelem])) ? (ipLo+5) : (iso.numLevels[ipH_LIKE][nelem])); ++ipHi ) |
| { |
| float wl; |
| |
| hbetab = HSRate( ipHi,ipLo , nelem+1, phycon.te , dense.eden, chAB[iCase] ); |
| if( hbetab<=0. ) |
| CaseBHS.lgHCaseBOK[iCase][nelem] = 0; |
| |
| if( !hydro.lgHydEmiss ) |
| hbetab *= abund.xIonFracs[nelem][nelem+1]*dense.eden; |
| |
| linadd(hbetab,wl,chLab,'i' ); |
| } |
| } |
| } |
| } |
| } |