In model_initialize_real.F or wherever you want the tracers to go, you need to initialize the tracers first as zero everywhere....or you can also initialize them as a certain value. Both examples are given. Here is a snippet of the code (just search for tracer or stuff). Note that tracer_opt is a namelist flag you'll set in the namelist. ! Our tracer arrray init thingies IF ( config_flags%tracer_opt == 1 ) THEN DO j=jts,MIN(jde-1,jte) DO k=kts,kte DO i=its,MIN(ide-1,ite) tracer(i,k,j,P_stuff1) = 0.0 [HERE THE TRACER IS INITIALIZED AS ZERO] tracer(i,k,j,P_stuff2) = 0.0 END DO END DO END DO k=kts DO j=jts,MIN(jde-1,jte) if ( abs(j-jde/2).le.4) then jw = 1 else jw = 0 end if DO i=its,MIN(ide-1,ite) if ( abs(i-ide/2).le.4) then iw = 1 else iw = 0 end if val = 1.e-6 * real(iw) * real(jw) tracer(i,k,j,P_stuff2) = val [HERE THE TRACER IS SET AS A CERTAIN VALUE] END DO END DO END IF Next in the namelist, set a namelist value of tracer_opt. If you have tracers in different domains, you can specify them separately. In the Registry, find the tracer section. I've added my own package of tracers called stuff. I didn't choose the name...Dave Gill, the guy that was helping me chose it and I didn't feel like changing it. :P You can be more creative if you want. You need to modify three things in the registry...the names of the tracers you added in module_initialize, the package name, and the namelist option. [SET THE NAMELIST VALUE IN THE REGISTRY] rconfig integer tracer_opt namelist,dynamics max_domains 0 rh "tracer_opt" [MAKE A NEW PACKAGE AND TELL THEM WHICH TRACERS ARE PART OF THE PACKAGE] package tracer_prac1 tracer_opt==1 - tracer:stuff1,stuff2 [NAME THE TRACERS YOU'LL USE IN THE REGISTRY (NOTE, I HAVE 15 TRACERS NOW AND I JUST KEEP ADDING THEM ON HERE AND ABOVE)] state real stuff1 ikjftb tracer 1 - irhusdf=(bdy_interp:dt) "STUFF1" "Practice tracer #1" - state real stuff2 ikjftb tracer 1 - irhusdf=(bdy_interp:dt) "STUFF2" "Practice tracer #2" - Finally, in solve_em.F you need to add your tracer source or whatever you want it to be. For example, this is a tracer source at 4 grid points in each time step. At the location (40,1,40) and the 3 points above it, the tracer value is set to a certain value at each time step. This isn't the best way...its better to add it to the value there. For example tracer=tracer+source so you don't have a loss of tracer by resetting the value. But you get the idea. For some reason its best to use really small value of tracers like e-6 shown here. I'm not exactly sure why but thats what i was told. You can always scale it up later. IF ( config_flags%tracer_opt == 1 ) THEN IF ( grid%id == 1 ) THEN tracer(40,1,40,P_stuff1) = 1.e-6 [SMALL NUMER IS IMPORTANT!] tracer(40,2,40,P_stuff1) = 1.e-6 [MAY WANT A SUM INSTEAD OF A RESET] tracer(40,3,40,P_stuff1) = 1.e-6 tracer(40,4,40,P_stuff1) = 1.e-6 END IF END IF Look for these pieces of code in the 4 files attached. Search for tracer or stuff and you should find em. I think it is somewhat random where they're placed, but for example in solve_em, the code snippet needs to be in the RK loops. Modify namelist and registry so the code knows what these tracers are. Initialize them as zero or as a set value. Use solve_em to modify them with each time step.