This zip archive contains the following:

1-BACOLI: bacoli95.f95: This file contains the top layer of Fortran 95 routines that implement 
          BACOLI. 
           
          bacoli.f: The file contains the middle layer of Fortran 77 routines that implement 
          BACOLI and that are  called by the top layer of BACOLI Fortran 95 routines. 

          bacoli-aux.f: This file contains the bottom layer of Fortran 77 routines that are called 
          by the routines in the middle layer to carry out basic tasks involving, e.g., linear algebra 
          computations, time-stepping computations, etc..

          d1mach_i1mach.f95: Fortran 95 implementations of the i1mach and d1mach functions.

2-Driver95: driver95-simple.f95, driver95-curve.f95, driver95-trimesh.f95: These files contain 
            sample main programs, written in Fortran95, that call the top level BACOLI Fortran95 
            routines in order to solve a problem whose details are specified by the routines in 
            a file from 3-Problems. Note that the value set in these drivers for the number of 
            PDEs, npde, must be consistent with the corresponding problem from 3-Problems.

3-Problems: burg1.f, burg2.f, cahn_allen.f, rcdsys.f, sincmads.f, steady.f: These files contain 
            Fortran 77 routines that provide information for specific problems. These are called 
            by the middle layer BACOLI Fortran 77 routines to provide problem dependent 
            information.

Makefile: A sample makefile

PortabilityCheck.txt: Description of a portability check performed on the source code.

README.txt: This README file.

------------------------------------------------------------------------------------------------------

The source code is well documented; the bacoli95.f95 and bacoli.f files contain substantial
explanations of how to use the software, including detailed descriptions of all routines
and their parameters.

Sample executions of BACOLI can be realized by compiling all the files from 1-BACOLI together with
one file from 2-Driver and one file from 3-Problems. 

***It is important that the value set for npde in the driver routine is consistent with the number
of PDEs specified in the selected problem.***


Samples of executions of BACOLI with several drivers and problems:

gfortran 1-BACOLI/*.f95 1-BACOLI/*.f 2-Driver95/driver95-simple.f95 3-Problems/burg1.f -o burg1

generates the executable burg1, for which the output is:

 The number of PDEs is assumed to be            1

idid=    3
idid > 0 => Successful computation
At t=1.00

the solution is
         XOUT                       UOUT
   0.0000000000000000        1.0000000000000000
  0.10000000000000001        1.0000000120314572
  0.20000000000000001        1.0000000357486174
  0.30000000000000004       0.99999996986936257
  0.40000000000000002       0.99999995661802510
  0.50000000000000000        1.0000001186418612
  0.60000000000000009       0.99999981580853115
  0.70000000000000007        1.0000001844739099
  0.80000000000000004       9.67365356133440831E-008
  0.90000000000000002       2.13404066329258235E-008
   1.0000000000000000      -1.09361045094053121E-024



Similarly

gfortran 1-BACOLI/*.f95 1-BACOLI/*.f 2-Driver95/driver95-curve.f95 3-Problems/rcdsys.f -o rcdsys

generates the executable rcdsys, for which the output is

 The number of PDEs is assumed to be            4


THE INPUT IS
kcol =  4, nint0 =   10, npde =   4, tout = 1.0E+00
atol = 1.0E-06, rtol = 1.0E-06,                 LOI
idid=    3
idid > 0 => Successful computation

THE OUTPUT IS
         XOUT                       UOUT
   0.0000000000000000        1.0398415044051528       0.95980117739666426       0.62999207065541385       0.28910224783954114
  0.10000000000000001       0.40191604635911554       0.33583060971298506       0.45497417165982867       4.33062851933434384E-002
  0.20000000000000001       5.92446611564076894E-002  3.82265337147437365E-002  0.17332575609218773       7.92774509084112795E-003
  0.29999999999999999       8.36340103446610479E-003  2.20803956668171085E-003  8.64311942147965168E-002  8.02135907479133332E-004
  0.40000000000000002       4.40335904041259159E-003  1.13373223271436631E-004  7.66996842199606649E-002  4.54764377654726039E-005
  0.50000000000000000       4.12561065357117032E-003  5.79671619789677761E-006  7.59439006951420914E-002  2.34754220795698405E-006
  0.59999999999999998       4.10753605736610596E-003  3.27584728517134602E-007  7.58964545097882970E-002  1.32814813031806721E-007
  0.69999999999999996       4.10626005547534614E-003 -1.94405984939484273E-008  7.58934638553812740E-002 -7.83254170208713473E-009
  0.80000000000000004       4.10644546394658711E-003  3.48260140375977161E-008  7.58939963190262690E-002  1.42009083815807837E-008
  0.90000000000000002       4.10631239587164361E-003 -5.11244075629176943E-009  7.58936097825448214E-002 -2.12887285389440519E-009
   1.0000000000000000       4.10631781034787903E-003 -2.54322125987524551E-009  7.58936486370706265E-002 -9.94823925462254886E-010

SPATIAL PARTIAL DERIVATIVE 1
         XOUT                       UOUT
   0.0000000000000000       -1.5849559484768179       -1.9882260333606609       1.18234311230480671E-011  2.27373675443232059E-013
  0.10000000000000001       -5.7814578889229162       -5.3535908029743027       -2.8169433134731134      -0.72070914801570973
  0.20000000000000001       -1.3252430872801568       -1.0152078071471458       -1.8596169670919114      -0.14632448036634760
  0.29999999999999999      -0.11228928498151200      -6.51658294002985250E-002 -0.25793366564913450      -2.16937318583736612E-002
  0.40000000000000002      -7.99858179748868386E-003 -3.37829900105418492E-003 -2.15854849168612764E-002 -1.34398811776394720E-003
  0.50000000000000000      -5.33907990472817719E-004 -1.70924290387328772E-004 -1.43440379920121638E-003 -6.91533206998114675E-005
  0.59999999999999998      -3.94540116153968280E-005 -1.09833581049380587E-005 -9.82585455590385308E-005 -4.45912969169523239E-006
  0.69999999999999996       1.34301680150160016E-006  4.57492248538347940E-007  5.30043691901113667E-006  1.87795015600694163E-007
  0.80000000000000004       5.38302366145590461E-008 -8.44966965883986345E-009 -2.66104537252620510E-007 -4.95544173044935931E-009
  0.90000000000000002      -1.29843744627045066E-006 -3.72926183830684380E-007 -3.43538342262306173E-006 -1.51351114749241544E-007
   1.0000000000000000        0.0000000000000000      -1.73377056391114601E-021 -1.11022302462515654E-016   0.0000000000000000



Finally

gfortran 1-BACOLI/*.f95 1-BACOLI/*.f 2-Driver95/driver95-trimesh.f95 3-Problems/burg2.f -o burg2

generates the executable burg2, for which the output is


 The number of PDEs is assumed to be            1


THE INPUT IS
kcol =  4, nint0 =   10, npde =   1, tout = 1.0E+00
atol = 1.0E-06, rtol = 1.0E-06,                 LOI
IDID       =          3
nsteps     =       1853



together with the file Points1 which contains

   0.0000000000000000        0.0000000000000000        1.0000000000000000
  0.33516947375216605        0.0000000000000000       0.50000000028301461
  0.41906525783522186        0.0000000000000000       0.49999996266143981
  0.44929834289272474        0.0000000000000000       0.49998421833300305
  0.46165655502065717        0.0000000000000000       0.49981319529564761
  0.46932822866733248        0.0000000000000000       0.49913502484823813
  0.47532445538459134        0.0000000000000000       0.49714465787726436
  0.48039831979642467        0.0000000000000000       0.49222052996229643
  0.48484935969049947        0.0000000000000000       0.48156672113267812
  0.48795605652258950        0.0000000000000000       0.46699801401090418
  0.49102230606161490        0.0000000000000000       0.44304200259650983
  0.49415593629746546        0.0000000000000000       0.40517213838012434
  0.49680481873599575        0.0000000000000000       0.36181422870211172
  0.49947767666702975        0.0000000000000000       0.31043697694054523
  0.50222396758224641        0.0000000000000000       0.25623974594031168
  0.50614366712287717        0.0000000000000000       0.19056127317255378
  0.51100875758809128        0.0000000000000000       0.13983732499566939
  0.51564134237367543        0.0000000000000000       0.11678246079368888
  0.52176793964916790        0.0000000000000000       0.10507891687638160
  0.52864102980064398        0.0000000000000000       0.10129694429900954
  0.53986085696212682        0.0000000000000000       0.10013792410415040
  0.55306904347233721        0.0000000000000000       0.10000982948515200
  0.56358102912919594        0.0000000000000000       0.10000120082761493
  0.57123492136494369        0.0000000000000000       0.10000025982028553
  0.57731347596948623        0.0000000000000000       0.10000007703652951
  0.58322701931396348        0.0000000000000000       0.10000002360765876
  0.58772241454496243        0.0000000000000000       0.10000000960700167
  0.59145287766508747        0.0000000000000000       0.10000000455579279
  0.59505478182353899        0.0000000000000000       0.10000000221669808
  0.59836582694868712        0.0000000000000000       0.10000000114317527
  0.60195479746521741        0.0000000000000000       0.10000000055767196
  0.60601735800524670        0.0000000000000000       0.10000000024746244
  0.60942527524491763        0.0000000000000000       0.10000000012517034
  0.61448550190317963        0.0000000000000000       0.10000000004549627
  0.61987671582697423        0.0000000000000000       0.10000000001547750
  0.62591847818947655        0.0000000000000000       0.10000000000462296
  0.63334899453206506        0.0000000000000000       0.10000000000104596
  0.64343441352833508        0.0000000000000000       0.10000000000013916
  0.65904777925992020        0.0000000000000000       0.10000000000000614
  0.69139752393185860        0.0000000000000000       0.10000000000000001
   1.0000000000000000        0.0000000000000000       0.10000000000000001
   0.0000000000000000       0.33333333333333331        1.0000000000000000
  0.33516947375216605       0.33333333333333331       0.99999994208177823
  0.41906525783522186       0.33333333333333331        1.0000000941371832
  0.44929834289272474       0.33333333333333331       0.99999847433579836
  0.46165655502065717       0.33333333333333331       0.99996555835071654
  0.46932822866733248       0.33333333333333331       0.99976619889809426
  0.47532445538459134       0.33333333333333331       0.99895524984962425
  0.48039831979642467       0.33333333333333331       0.99630563692024432
  0.48484935969049947       0.33333333333333331       0.98892655397895202
  0.48795605652258950       0.33333333333333331       0.97653414137057348
  0.49102230606161490       0.33333333333333331       0.95208408194417926
  0.49415593629746546       0.33333333333333331       0.90584274055113023
  0.49680481873599575       0.33333333333333331       0.84485697058042097
  0.49947767666702975       0.33333333333333331       0.76629948527085268
  0.50222396758224641       0.33333333333333331       0.68223841192152435
  0.50614366712287717       0.33333333333333331       0.58856436256987288
  0.51100875758809128       0.33333333333333331       0.52998108529640398
  0.51564134237367543       0.33333333333333331       0.50982009678599371
  0.52176793964916790       0.33333333333333331       0.50215599595233518
  0.52864102980064398       0.33333333333333331       0.50038810847391324
  0.53986085696212682       0.33333333333333331       0.50002115471401765
  0.55306904347233721       0.33333333333333331       0.49996731632192104
  0.56358102912919594       0.33333333333333331       0.49972560044481673
  0.57123492136494369       0.33333333333333331       0.49873473388725637
  0.57731347596948623       0.33333333333333331       0.49576444415610732
  0.58322701931396348       0.33333333333333331       0.48650201390273284
  0.58772241454496243       0.33333333333333331       0.46838559115279677
  0.59145287766508747       0.33333333333333331       0.43870463845692464
  0.59505478182353899       0.33333333333333331       0.39155954895367906
  0.59836582694868712       0.33333333333333331       0.33239550972074572
  0.60195479746521741       0.33333333333333331       0.26139441650450074
  0.60601735800524670       0.33333333333333331       0.19234314189842966
  0.60942527524491763       0.33333333333333331       0.15272359185180229
  0.61448550190317963       0.33333333333333331       0.12091874455861135
  0.61987671582697423       0.33333333333333331       0.10737073715381668
  0.62591847818947655       0.33333333333333331       0.10223041534804816
  0.63334899453206506       0.33333333333333331       0.10050688599345081
  0.64343441352833508       0.33333333333333331       0.10006755401470277
  0.65904777925992020       0.33333333333333331       0.10000296143628856
  0.69139752393185860       0.33333333333333331       9.99998870744641388E-002
   1.0000000000000000       0.33333333333333331       0.10000000000000001
   0.0000000000000000       0.66666666666666663        1.0000000000000000
  0.48006922811536584       0.66666666666666663        1.0000000077439528
  0.60970487076646185       0.66666666666666663       0.99999989951893731
  0.67317479545978265       0.66666666666666663       0.99999995371539518
  0.69492322217314173       0.66666666666666663       0.99999909629975359
  0.70342002751074428       0.66666666666666663       0.99997995456911171
  0.70836784362112903       0.66666666666666663       0.99984007607507097
  0.71181393618612465       0.66666666666666663       0.99928190217817392
  0.71453564192995955       0.66666666666666663       0.99761155116258693
  0.71723358933299841       0.66666666666666663       0.99210574741036528
  0.71912960636848233       0.66666666666666663       0.98178719462709441
  0.72078934480129331       0.66666666666666663       0.96253399304800946
  0.72274394319005997       0.66666666666666663       0.91494764548555496
  0.72404912190996684       0.66666666666666663       0.85790442237305020
  0.72545031529360815       0.66666666666666663       0.76581597032752957
  0.72703623707201970       0.66666666666666663       0.62415986804390400
  0.72865362625735841       0.66666666666666663       0.46252270809238932
  0.73053156921375273       0.66666666666666663       0.30245708465429155
  0.73298006817334904       0.66666666666666663       0.17940221148179325
  0.73553176271443110       0.66666666666666663       0.12695343836299827
  0.73854354284910118       0.66666666666666663       0.10720358183175074
  0.74232641167009272       0.66666666666666663       0.10137332701573587
  0.74846564734403109       0.66666666666666663       0.10010625796764741
  0.75701347740975178       0.66666666666666663       0.10000628084850965
  0.78656538272631227       0.66666666666666663       9.99999444887732514E-002
   1.0000000000000000       0.66666666666666663       0.10000000000000001
   0.0000000000000000        1.0000000000000000        1.0000000000000000
  0.44855764187842384        1.0000000000000000       0.99999989478389928
  0.69071021299938162        1.0000000000000000        1.0000002105866748
  0.81107655286389135        1.0000000000000000        1.0000000339364230
  0.86613377516595780        1.0000000000000000       0.99999995720477886
  0.88109623468633658        1.0000000000000000       0.99999856072360105
  0.88797561395954416        1.0000000000000000       0.99997271676336696
  0.89224887160506805        1.0000000000000000       0.99981449559935820
  0.89554733975570033        1.0000000000000000       0.99918284029341697
  0.89860388039690431        1.0000000000000000       0.99677596276220548
  0.90107031420564188        1.0000000000000000       0.99028938489072948
  0.90284103656512471        1.0000000000000000       0.97873697916842572
  0.90462590284673305        1.0000000000000000       0.95387070302223043
  0.90612737356668682        1.0000000000000000       0.91361456253834206
  0.90770622263974843        1.0000000000000000       0.84009321659068426
  0.90923822072329652        1.0000000000000000       0.72914733036687074
  0.91077899365271819        1.0000000000000000       0.58356267322231004
  0.91298381349293389        1.0000000000000000       0.37086526339120018
  0.91535824979364322        1.0000000000000000       0.21595914678218947
  0.91799209954572736        1.0000000000000000       0.13892819329611095
  0.92102276126636573        1.0000000000000000       0.11028449072907889
  0.92588695656679665        1.0000000000000000       0.10116407803500857
  0.93098245429927551        1.0000000000000000       0.10011801827101613
  0.94365273141740924        1.0000000000000000       0.10000044654511048
   1.0000000000000000        1.0000000000000000       0.10000000000000002
