\(\(\( (*\(--\(--\(--\(--\(--\(--\(--\(-\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(----\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)*) \)\(
\)\( (*\ \ MATHEMATICA\ CODE\ to\ run\ the\ model\ described\ in\ Goodreau\ et\ al . \ 
          JID\ 2003. \ *) \)\(
\)\( (*\ \ Last\ \(updated : \ \ 8\ May\ 2003\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ *) \)\(
\)\( (*\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(-\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(----\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)*) \)\(
\)\(
\)\( (*\ \ INTRO : 

\ \ \ The\ basic\ structure\ is\ a\ compartmental\ model\ defined\ by\ a\ system\ of\ six\ ODE' s, \ 
      one\ per\ compartment . \ 

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ in[
              t]\  = \ \(#\ of\ insertive\ negatives\ at\ time\ t

        \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ip[
            t]\  = \ \(#\ of\ insertive\ positives\ at\ time\ t

          \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rn[
              t]\  = \ \(#\ of\ receptive\ negatives\ at\ time\ t

            \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rp[
                t]\  = \ \(#\ of\ receptive\ positives\ at\ time\ t

              \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ vn[
                  t]\  = \ \(#\ of\ versatile\ negatives\ at\ time\ t

                \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ vp[
                    t]\  = \ #\ of\ versatile\ positives\ at\ time\ t\)\)\)\)\)
*) \)\(
\)\(
\)\( (*\(--\(--\(--\(--\(--\(--\(--\(-\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(----\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)*) \)\(
\)\( (*\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(-PARAMETERS\)\)\)\)\)\)\)\)\)\)\)\)\)\ TO\ \(\(\(\(\(\(\(\(\(\(\(\(\(\(\(CHANGE--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)*) \)\(
\)\( (*\(--\(--\(--\(--\(--\(--\(--\(-\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(----\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)*) \)\(
\)\(
\)\(\(Off[
        General::spell1];\)
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 

    \(singlerun\  = \ True;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ If\ True, \ 
      a\ single\ run\ is\ conducted\ using\ the\ user - 
        provided\ values\ "vvalue", \ "rvalue", 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ and\ "cvalue" . \ 
          Returned\ values\ are\ the\ size\ of\ each\ compartment\ every\ "samplewidth"
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ number\ of\ days\ for\ the\ time\ for\ the\ time\ period\ of\ length\ "duration" . 

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ If\ False, \ 
      a\ full\ set\ of\ 605\ runs\ are\ conducted\ using\ each\ combination\ of\ the\ \(values : 

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ vvalue\)\  = \ 0, \ 0.1, \ 0.2, \ 
      0.3, \ 0.4, \ 0.5, \ 0.6, \ 0.7, \ 0.8, \ 0.9, \ 
      1.0\ 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ hvalue\  = \ 0, \ 0.1, \ 0.2, \ 0.3, \ 0.4, \ 0.5, \ 0.6, \ 
      0.7, \ 0.8, \ 0.9, \ 
      1.0\ 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cvalue\  = \ 18, \ 21, \ 24, \ 27, \ 
      30. 

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Returned\ values\ are\ the\ size\ of\ each\ compartment\ at\ the\ end\ of\ each\ simulation\ 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \((time = \ "duration")\)\ for\ each\ run . \ 

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(REMINDER : \ 
            BE\ AWARE\ OF\ CASE - 
              SENSITIVITY\ IN\ CHOOSING\ True\ OR\ False\)\ *) 


    \(vvalue\  = \ 1.0;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      fraction\ of\ population\ that\ is\ versatile; \ 
      ranges\ from\ 0\ to\ 1; \ 
      matters\ only\ if\ singlerun\  = \ True\ *) 

    \(hvalue\  = \ 0.5;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      role\ mixing\ level; \ ranges\ from\ 0\ to\ 1; \ 
      matters\ only\ if\ singlerun\  = \ True\ *) 

    \(cvalue\  = \ 
        24;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      average\ number\ of\ partners\ per\ person\ per\ year\ \((actually\ per\ 360\ days)\); \ can\ take\ any\ non - negative\ value; \ 
      matters\ only\ if\ singlerun\  = \ 
        True\ \ *) 
\ 

    \(duration\  = 20*365;\)\ \ \ \ \ \ \ \ \ \ \  (*\ duration\ in\ days; \ 
      note, \ if\ less\ than\ 20*365\ then\ an\ error\ will\ occur\ for\ multiple\ runs\ *) \ \ \ \ \ \ \ \ \ \ \ \ 

    \(samplewidth = 1000;\)\ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      number\ of\ days\ between\ samples\ for\ a\ single\ run*) 

    \(initn = 10000;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      initial\ total\ pop\ size\ *) 

    \(initp = 0.01;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      initial\ HIV\ prevalence\ *) 

    \(μ = 
        2;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      number\ of\ new\ susceptibles\ per\ day\ *) 

    \(δ = \(1/365\)/
          30;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      fraction\ removed\ per\ day\ from\ general\ causes\ \((all\ 6\ compartments)\)\ \ *) 

    \(z = \(1/365\)/10;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      fraction\ removed\ per\ day\ from\ AIDS\ \((3\ postive\ compartments\ only)\)\ \ \ *) 

    \(infi = 0.005;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      prob\ of\ infection\ per\ day\ for\ a\ positive - receptive\ negative - 
        insertive\ contact\ *) 

    \(infr = 0.025;\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      prob\ of\ infection\ per\ day\ for\ a\ positive - insertive\ negative - 
        receptive\ contact\ *) 

 (*\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(----\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)*) 
 (*\ 
      CHANGES\ BELOW\ THIS\ POINT\ WILL\ AFFECT\ THE\ STRUCTURE\ OF\ THE\ MODEL\ \ *) 
 (*\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(----\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)*) 


\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      defining\ group\ relationships\ *) 


    \(i[t] = in[t] + ip[t];\)

    \(r[t] = rn[t] + rp[t];\)

    \(v[t] = vn[t] + vp[t];\)

    \(n[t] = 
        i[t] + r[t] + 
          v[t];\)

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
      select\ run\ values\ *) 


    \(If\ [
        singlerun == \ True, \ {lowvindex = vvalue, highvindex = vvalue, 
          lowhindex = hvalue, highhindex = hvalue, lowcindex = cvalue, \ 
          highcindex = cvalue}, {lowvindex = 1, highvindex = 11, 
          lowhindex = 1, highhindex = 11, lowcindex = 1, \ 
          highcindex = 
            5}];\)

\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ \(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(-main\)\)\)\)\)\)\)\)\)\)\)\)\)\)\)\ \(\(\(\(\(\(\(\(\(\(\(\(\(\(\(code\ --\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)--\)*) 


    \(Do[
\ 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ 
          for\ a\ single\ run, \ 
          looping\ indices\ do\ not\ have\ to\ be\ integral; 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cindex, \ 
          vindex, \ 
          and\ hindex\ can\ be\ given\ whatever\ values\ we\ want\ for\ c, v, 
          h
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ for\ multiple\ runs, \ 
          looping\ indices\ must\ be\ integral\ because\ they\ are\ used\ as\ array\ positions; 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ cindex, \ 
          vindex\ and\ hindex\ must\ therefore\ be\ transformed\ before\ being\ assigned\ to\ c, v, h\ *) 

\ 
        If[singlerun == 
            True, \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ 
{
\ \ c = 
              cindex/360, 
\ \ initv = 
              Which[vindex == 0, 0.00001, vindex == 1,  .99999, 
                True, vindex], 
\ \ h = \((hindex)\)
}, 
\ \ \ \ \ \ \ \ \ \ {\ 
\ 
            c = \((cindex + 5)\)/120, 
\ \ initv = 
              Which[vindex == 1, 0.00001, vindex == 11,  .99999, 
                True, \((vindex - 1)\)/
                  10], 
\ \ h = \((hindex - 1)\)/
                10
\ \ \ \ \ \ \ \ \ \ \ }, 
\ \ \ \ \ \ \ \ ]; 

initi = \((1 - initv)\)/
            2; 
initr = \((1 - initv)\)/
            2; 
\ \ \ 
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \  (*\ \ \ \ \ \ \ \ \ ODE\ core\ \ \ \ \ \ \ \ \ *) 

Solution = 
          NDSolve[{\(in'\)[
                  t] == μ*
                    initi - \((infi*in[t]*
                        rp[t]*\(c/i[t]\)/
                          r[t])\) \((\((1 - 
                              h)\) \((n[t]/2 + \(v[t]^2/2\)/n[t] - 
                              v[t])\) + \((h)\) \((i[t] + r[t])\)/
                            2)\) - \((infi*in[t]*
                        vp[t]*\(c/i[t]\)/v[t])\) \((1 - h)\) \((i[t]*
                        v[t]/n[t])\) - δ*in[t], \(rn'\)[
                  t] == μ*
                    initr - \((infr*rn[t]*
                        ip[t]*\(c/i[t]\)/
                          r[t])\) \((\((1 - 
                              h)\) \((n[t]/2 + \(v[t]^2/2\)/n[t] - 
                              v[t])\) + \((h)\) \((i[t] + r[t])\)/
                            2)\) - \((infr*rn[t]*
                        vp[t]*\(c/r[t]\)/v[t])\) \((1 - h)\) \((r[t]*
                        v[t]/n[t])\) - δ*rn[t], \(vn'\)[
                  t] == μ*
                    initv - \((infr*vn[t]*ip[t]*\(c/v[t]\)/i[t])\) \((1 - 
                        h)\) \((v[t]*i[t]/n[t])\) - \((infi*vn[t]*
                        rp[t]*\(c/v[t]\)/r[t])\) \((1 - h)\) \((v[t]*
                        r[t]/n[t])\) - \((infi + infr)\)*\((vn[t]*vp[t]*
                        c/v[t]^2)\)*\((\((\(v[t]^2/2\)/n[t])\) \((1 - h)\) + 
                        v[t]*h/2)\) - δ*vn[t], \(ip'\)[
                  t] == \((infi*in[t]*
                        rp[t]*\(c/i[t]\)/
                          r[t])\) \((\((1 - 
                              h)\) \((n[t]/2 + \(v[t]^2/2\)/n[t] - 
                              v[t])\) + \((h)\) \((i[t] + r[t])\)/
                            2)\) + \((infi*in[t]*
                        vp[t]*\(c/i[t]\)/v[t])\) \((1 - h)\) \((i[t]*
                        v[t]/n[t])\) - δ*ip[t] - z*ip[t], \(rp'\)[
                  t] == \((infr*rn[t]*
                        ip[t]*\(c/i[t]\)/
                          r[t])\) \((\((1 - 
                              h)\) \((n[t]/2 + \(v[t]^2/2\)/n[t] - 
                              v[t])\) + \((h)\) \((i[t] + r[t])\)/
                            2)\) + \((infr*rn[t]*
                        vp[t]*\(c/r[t]\)/v[t])\) \((1 - h)\) \((r[t]*
                        v[t]/n[t])\) - δ*rp[t] - z*rp[t], \(vp'\)[
                  t] == \((infr*vn[t]*ip[t]*\(c/v[t]\)/i[t])\) \((1 - 
                        h)\) \((v[t]*i[t]/n[t])\) + \((infi*vn[t]*
                        rp[t]*\(c/v[t]\)/r[t])\) \((1 - h)\) \((v[t]*
                        r[t]/n[t])\) + \((infi + infr)\)*\((vn[t]*vp[t]*
                        c/v[t]^2)\)*\((\((\(v[t]^2/2\)/n[t])\) \((1 - h)\) + 
                        v[t]*h/2)\) - δ*vp[t] - 
                  z*vp[t], 
in[0] == 
                initn*initi*\((1 - initp)\), 
              rn[0] == initn*initr*\((1 - initp)\), 
              vn[0] == initn*initv*\((1 - initp)\), 
              ip[0] == initn*initi*initp, 
              rp[0] == initn*initr*initp, 
              vp[0] == initn*initv*initp}, {in, rn, vn, ip, rp, 
              vp}, {t, 0, 
              duration}]; 

ineg\  = \ 
          Solution[\([1, 1, 2]\)]; 
rneg\  = \ 
          Solution[\([1, 2, 2]\)]; 
vneg\  = \ 
          Solution[\([1, 3, 2]\)]; 
ipos\  = \ 
          Solution[\([1, 4, 2]\)]; 
rpos\  = \ 
          Solution[\([1, 5, 2]\)]; 
vpos\  = \ 
          Solution[\([1, 6, 2]\)]; 

If[
          singlerun == 
            False, 
{ineg20[cindex, vindex, hindex]\  = \ 
              ineg[7300], 
rneg20[cindex, vindex, 
                hindex]\  = \ 
              rneg[7300], 
vneg20[cindex, vindex, 
                hindex]\  = \ 
              vneg[7300], 
ipos20[cindex, vindex, 
                hindex]\  = \ 
              ipos[7300], 
rpos20[cindex, vindex, 
                hindex]\  = \ 
              rpos[7300], 
vpos20[cindex, vindex, 
                hindex]\  = \ 
              vpos[
                7300], 
}], 

{cindex, lowcindex, highcindex}, {vindex, lowvindex, 
          highvindex}, {hindex, lowhindex, 
          highhindex}];\)


 (*\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\ \ \ \ Final\)\)\)\)\)\)\)\)\)\)\ processing\ into\ \(tables\ \ \ \ \ \ \ --\) \(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(--\(---\)\)\)\)\)\)\)\)\)\)\)\)*) 


    If\ [singlerun == 
        False, 
{inegAllRunsY20Table\  = \ 
          Table[ineg20[i, j, k], {i, 5}, {j, 11}, {k, 
              11}], 
rnegAllRunsY20Table\  = \ 
          Table[rneg20[i, j, k], {i, 5}, {j, 11}, {k, 
              11}], 
vnegAllRunsY20Table\  = \ 
          Table[vneg20[i, j, k], {i, 5}, {j, 11}, {k, 
              11}], 
iposAllRunsY20Table\  = \ 
          Table[ipos20[i, j, k], {i, 5}, {j, 11}, {k, 
              11}], 
rposAllRunsY20Table\  = \ 
          Table[rpos20[i, j, k], {i, 5}, {j, 11}, {k, 
              11}], 
vposAllRunsY20Table\  = \ 
          Table[vpos20[i, j, k], {i, 5}, {j, 11}, {k, 
              11}], 
}, 
{
inegOneRunTable\  = \ 
          Table[ineg[i], {i, 0, duration, 
              samplewidth}], 
rnegOneRunTable\  = \ 
          Table[rneg[i], {i, 0, duration, 
              samplewidth}], 
vnegOneRunTable\  = \ 
          Table[vneg[i], {i, 0, duration, 
              samplewidth}], 
iposOneRunTable\  = \ 
          Table[ipos[i], {i, 0, duration, 
              samplewidth}], 
rposOneRunTable\  = \ 
          Table[rpos[i], {i, 0, duration, 
              samplewidth}], 
vposOneRunTable\  = \ 
          Table[vpos[i], {i, 0, duration, 
              samplewidth}]
}\ 
\ ]



 (*\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ OK, \ 
      now\ it' s\ up\ to\ you\ to\ export\ them\ however\ you\ \(want!\)\ \ \ \ \ \ \ \ \ \ \ \ \ \ *) \ 


    \)\)\)