docs: def globe7(p, Input, flags):
      '''
  /*       CALCULATE G(L) FUNCTION 
   *       Upper Thermosphere Parameters */
  '''
      t = [0]*15  #modified this, there was a for loop that did this
      sw9 = 1
      sr = 7.2722E-5;
      dgtr = 1.74533E-2;
      dr = 1.72142E-2;
      hr = 0.2618;
  
      tloc = Input.lst
      #for j in range(14):
      #    t[j] = 0
      if(flags.sw[9] > 0):
          sw9 = 1
      elif(flags.sw[9] < 0): # pragma: no cover
          sw9 = -1
      xlong = Input.g_long
  
      #/* calculate legendre polynomials */
      c = sin(Input.g_lat * dgtr);
      s = cos(Input.g_lat * dgtr);
      c2 = c*c;
      c4 = c2*c2;
      s2 = s*s;
  
      plg[0][1] = c;
      plg[0][2] = 0.5*(3.0*c2 -1.0);
      plg[0][3] = 0.5*(5.0*c*c2-3.0*c);
      plg[0][4] = (35.0*c4 - 30.0*c2 + 3.0)/8.0;
      plg[0][5] = (63.0*c2*c2*c - 70.0*c2*c + 15.0*c)/8.0;
      plg[0][6] = (11.0*c*plg[0][5] - 5.0*plg[0][4])/6.0;
  #/*      plg[0][7] = (13.0*c*plg[0][6] - 6.0*plg[0][5])/7.0; */
      plg[1][1] = s;
      plg[1][2] = 3.0*c*s;
      plg[1][3] = 1.5*(5.0*c2-1.0)*s;
      plg[1][4] = 2.5*(7.0*c2*c-3.0*c)*s;
      plg[1][5] = 1.875*(21.0*c4 - 14.0*c2 +1.0)*s;
      plg[1][6] = (11.0*c*plg[1][5]-6.0*plg[1][4])/5.0;
  #/*      plg[1][7] = (13.0*c*plg[1][6]-7.0*plg[1][5])/6.0; */
  #/*      plg[1][8] = (15.0*c*plg[1][7]-8.0*plg[1][6])/7.0; */
      plg[2][2] = 3.0*s2;
      plg[2][3] = 15.0*s2*c;
      plg[2][4] = 7.5*(7.0*c2 -1.0)*s2;
      plg[2][5] = 3.0*c*plg[2][4]-2.0*plg[2][3];
      plg[2][6] =(11.0*c*plg[2][5]-7.0*plg[2][4])/4.0;
      plg[2][7] =(13.0*c*plg[2][6]-8.0*plg[2][5])/5.0;
      plg[3][3] = 15.0*s2*s;
      plg[3][4] = 105.0*s2*s*c; 
      plg[3][5] =(9.0*c*plg[3][4]-7.*plg[3][3])/2.0;
      plg[3][6] =(11.0*c*plg[3][5]-8.*plg[3][4])/3.0;
  
      if( not (((flags.sw[7]==0) and (flags.sw[8]==0)) and (flags.sw[14] == 0))):
          global stloc
          stloc = sin(hr*tloc);
          global ctloc
          ctloc = cos(hr*tloc);
          global s2tloc
          s2tloc = sin(2.0*hr*tloc);
          global c2tloc
          c2tloc = cos(2.0*hr*tloc);
          global s3tloc
          s3tloc = sin(3.0*hr*tloc);
          global c3tloc
          c3tloc = cos(3.0*hr*tloc);
  
      cd32 = cos(dr*(Input.doy-p[31]));
      cd18 = cos(2.0*dr*(Input.doy-p[17]));
      cd14 = cos(dr*(Input.doy-p[13]));
      cd39 = cos(2.0*dr*(Input.doy-p[38]));
      p32=p[31];
      p18=p[17];
      p14=p[13];
      p39=p[38];
  
      #/* F10.7 EFFECT */
      df = Input.f107 - Input.f107A;
      global dfa
      dfa = Input.f107A - 150.0;
      t[0] =  p[19]*df*(1.0+p[59]*dfa) + p[20]*df*df + p[21]*dfa + p[29]*pow(dfa,2.0);
      f1 = 1.0 + (p[47]*dfa +p[19]*df+p[20]*df*df)*flags.swc[1];
      f2 = 1.0 + (p[49]*dfa+p[19]*df+p[20]*df*df)*flags.swc[1];
  
      #/*  TIME INDEPENDENT */
      t[1] = (p[1]*plg[0][2]+ p[2]*plg[0][4]+p[22]*plg[0][6]) + \
            (p[14]*plg[0][2])*dfa*flags.swc[1] +p[26]*plg[0][1];
  
      #/*  SYMMETRICAL ANNUAL */
      t[2] = p[18]*cd32;
  
      #/*  SYMMETRICAL SEMIANNUAL */
      t[3] = (p[15]+p[16]*plg[0][2])*cd18;
  
      #/*  ASYMMETRICAL ANNUAL */
      t[4] =  f1*(p[9]*plg[0][1]+p[10]*plg[0][3])*cd14;
  
      #/*  ASYMMETRICAL SEMIANNUAL */
      t[5] =    p[37]*plg[0][1]*cd39;
  
      #/* DIURNAL */
      if (flags.sw[7]):
          t71 = (p[11]*plg[1][2])*cd14*flags.swc[5];
          t72 = (p[12]*plg[1][2])*cd14*flags.swc[5];
          t[6] = f2*((p[3]*plg[1][1] + p[4]*plg[1][3] + p[27]*plg[1][5] + t71) * \
                     ctloc + (p[6]*plg[1][1] + p[7]*plg[1][3] + p[28]*plg[1][5] \
                              + t72)*stloc);
  
  
      #/* SEMIDIURNAL */
      if (flags.sw[8]):
          t81 = (p[23]*plg[2][3]+p[35]*plg[2][5])*cd14*flags.swc[5];
          t82 = (p[33]*plg[2][3]+p[36]*plg[2][5])*cd14*flags.swc[5];
          t[7] = f2*((p[5]*plg[2][2]+ p[41]*plg[2][4] + t81)*c2tloc +(p[8]*plg[2][2] + p[42]*plg[2][4] + t82)*s2tloc);
      
  
      #/* TERDIURNAL */
      if (flags.sw[14]):
          t[13] = f2 * ((p[39]*plg[3][3]+(p[93]*plg[3][4]+p[46]*plg[3][6])*cd14*flags.swc[5])* s3tloc +(p[40]*plg[3][3]+(p[94]*plg[3][4]+p[48]*plg[3][6])*cd14*flags.swc[5])* c3tloc);
  
  
      #/* magnetic activity based on daily ap */
      if (flags.sw[9]==-1):
          ap = Input.ap_a;
          if (p[51]!=0):
              exp1 = exp(-10800.0*sqrt(p[51]*p[51])/(1.0+p[138]*(45.0-sqrt(Input.g_lat*Input.g_lat))));
              if (exp1>0.99999): # pragma: no cover
                      exp1=0.99999;
              if (p[24]<1.0E-4): # pragma: no cover
                      p[24]=1.0E-4;
              apt[0]=sg0(exp1,p,ap.a);
              #/* apt[1]=sg2(exp1,p,ap->a);
              #   apt[2]=sg0(exp2,p,ap->a);
              #   apt[3]=sg2(exp2,p,ap->a);
              #*/
              if (flags.sw[9]):
                  t[8] = apt[0]*(p[50]+p[96]*plg[0][2]+p[54]*plg[0][4]+ \
                          (p[125]*plg[0][1]+p[126]*plg[0][3]+p[127]*plg[0][5])*cd14*flags.swc[5]+ \
                          (p[128]*plg[1][1]+p[129]*plg[1][3]+p[130]*plg[1][5])*flags.swc[7]* \
                                         cos(hr*(tloc-p[131])));
                      
              
      else:
          apd=Input.ap-4.0;
          p44=p[43];
          p45=p[44];
          if (p44<0): # pragma: no cover
              p44 = 1.0E-5;
          global apdf
          apdf = apd + (p45-1.0)*(apd + (exp(-p44 * apd) - 1.0)/p44);
          if (flags.sw[9]):
              t[8]=apdf*(p[32]+p[45]*plg[0][2]+p[34]*plg[0][4]+ \
               (p[100]*plg[0][1]+p[101]*plg[0][3]+p[102]*plg[0][5])*cd14*flags.swc[5]+
               (p[121]*plg[1][1]+p[122]*plg[1][3]+p[123]*plg[1][5])*flags.swc[7]*
                  cos(hr*(tloc-p[124])));
              
      
  
      if ((flags.sw[10]) and (Input.g_long>-1000.0)):
  
              #/* longitudinal */
              if (flags.sw[11]):
                      t[10] = (1.0 + p[80]*dfa*flags.swc[1])* \
                       ((p[64]*plg[1][2]+p[65]*plg[1][4]+p[66]*plg[1][6]\
                        +p[103]*plg[1][1]+p[104]*plg[1][3]+p[105]*plg[1][5]\
                        +flags.swc[5]*(p[109]*plg[1][1]+p[110]*plg[1][3]+p[111]*plg[1][5])*cd14)* \
                            cos(dgtr*Input.g_long) \
                        +(p[90]*plg[1][2]+p[91]*plg[1][4]+p[92]*plg[1][6]\
                        +p[106]*plg[1][1]+p[107]*plg[1][3]+p[108]*plg[1][5]\
                        +flags.swc[5]*(p[112]*plg[1][1]+p[113]*plg[1][3]+p[114]*plg[1][5])*cd14)* \
                        sin(dgtr*Input.g_long));
              
  
              #/* ut and mixed ut, longitude */
              if (flags.sw[12]):
                      t[11]=(1.0+p[95]*plg[0][1])*(1.0+p[81]*dfa*flags.swc[1])*\
                              (1.0+p[119]*plg[0][1]*flags.swc[5]*cd14)*\
                              ((p[68]*plg[0][1]+p[69]*plg[0][3]+p[70]*plg[0][5])*\
                              cos(sr*(Input.sec-p[71])));
                      t[11]+=flags.swc[11]*\
                              (p[76]*plg[2][3]+p[77]*plg[2][5]+p[78]*plg[2][7])*\
                              cos(sr*(Input.sec-p[79])+2.0*dgtr*Input.g_long)*(1.0+p[137]*dfa*flags.swc[1]);
              
  
              #/* ut, longitude magnetic activity */
              if (flags.sw[13]):
                  if (flags.sw[9]==-1):
                      if (p[51]):
                              t[12]=apt[0]*flags.swc[11]*(1.+p[132]*plg[0][1])*\
                                      ((p[52]*plg[1][2]+p[98]*plg[1][4]+p[67]*plg[1][6])*\
                                       cos(dgtr*(Input.g_long-p[97])))\
                                      +apt[0]*flags.swc[11]*flags.swc[5]*\
                                      (p[133]*plg[1][1]+p[134]*plg[1][3]+p[135]*plg[1][5])*\
                                      cd14*cos(dgtr*(Input.g_long-p[136])) \
                                      +apt[0]*flags.swc[12]* \
                                      (p[55]*plg[0][1]+p[56]*plg[0][3]+p[57]*plg[0][5])*\
                                      cos(sr*(Input.sec-p[58]));
                          
                  else:
                      t[12] = apdf*flags.swc[11]*(1.0+p[120]*plg[0][1])*\
                              ((p[60]*plg[1][2]+p[61]*plg[1][4]+p[62]*plg[1][6])*\
                              cos(dgtr*(Input.g_long-p[63])))\
                              +apdf*flags.swc[11]*flags.swc[5]* \
                              (p[115]*plg[1][1]+p[116]*plg[1][3]+p[117]*plg[1][5])* \
                              cd14*cos(dgtr*(Input.g_long-p[118])) \
                              + apdf*flags.swc[12]* \
                              (p[83]*plg[0][1]+p[84]*plg[0][3]+p[85]*plg[0][5])* \
                              cos(sr*(Input.sec-p[75]));
                      			
              
      
  
      #/* parms not used: 82, 89, 99, 139-149 */
      tinf = p[30];
      for i in range(14):
          tinf = tinf + abs(flags.sw[i+1])*t[i];
      return tinf;