Called for each column per timestep this will calculate the microphysical tendencies. 
  503     type(model_state_type), 
target, 
intent(inout) :: current_state
 
  506     INTEGER :: icol, jcol, iqx, target_x_index, target_y_index
 
  508     icol=current_state%column_local_x
 
  509     jcol=current_state%column_local_y
 
  510     target_y_index=jcol-current_state%local_grid%halo_size(y_index)
 
  511     target_x_index=icol-current_state%local_grid%halo_size(x_index)
 
  518     if (current_state%halo_column .or. current_state%timestep < 2) 
return 
  520     if (current_state%field_stepping == forward_stepping)
then 
  522       dtwp = current_state%dtm
 
  524       dtwp = 2.0*current_state%dtm
 
  530     aitkensolnumber = 0.0
 
  531     daitkensolnumber = 0.0
 
  535     daccumsolnumber = 0.0
 
  538     coarsesolnumber = 0.0
 
  539     dcoarsesolnumber = 0.0
 
  540     activesolliquid = 0.0
 
  541     dactivesolliquid = 0.0
 
  543     dcoarsedustmass = 0.0
 
  544     coarsedustnumber = 0.0
 
  545     dcoarsedustnumber = 0.0
 
  547     dactiveinsolice = 0.0
 
  550     activeinsolliquid = 0.0
 
  551     dactiveinsolliquid = 0.0
 
  553     daccuminsolmass = 0.0
 
  554     accuminsolnumber = 0.0
 
  555     daccuminsolnumber = 0.0
 
  556     activesolnumber = 0.0
 
  557     dactivesolnumber = 0.0
 
  558     activeinsolnumber = 0.0
 
  559     dactiveinsolnumber = 0.0
 
  564     theta(:,1,1) = current_state%zth%data(:, jcol, icol) + current_state%global_grid%configuration%vertical%thref(:)
 
  565     dth(:,1,1) = current_state%sth%data(:, jcol, icol)
 
  566     exner(:,1,1) = current_state%global_grid%configuration%vertical%rprefrcp(:)
 
  567     pressure(:,1,1) = current_state%global_grid%configuration%vertical%prefn(:)
 
  568     z_centre(:,1,1) = current_state%global_grid%configuration%vertical%zn(:)
 
  569     dz(:,1,1) = current_state%global_grid%configuration%vertical%dz(:)
 
  570     z_half(:kte-1,1,1) = current_state%global_grid%configuration%vertical%z(:)
 
  571     rho(:,1,1) = current_state%global_grid%configuration%vertical%rhon(:)
 
  572     w(:,1,1) = current_state%zw%data(:, jcol, icol)
 
  576     qv(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  577     dqv(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  582       qc(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  583       dqc(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  587       qr(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  588       dqr(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  592       nc(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  593       dnc(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  597       nr(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  598       dnr(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  602       m3r(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  603       dm3r(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  609       qi(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  610       dqi(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  614       qs(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  615       dqs(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  619       qg(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  620       dqg(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  624       ni(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  625       dni(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  629       ns(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  630       dns(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  634       ng(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  635       dng(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  639       m3s(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  640       dm3s(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  644       m3g(:,1,1) = current_state%zq(iqx)%data(:,jcol,icol)
 
  645       dm3g(:,1,1) = current_state%sq(iqx)%data(:,jcol,icol)
 
  650     if (i_aitkensolmass>0)     aitkensolmass(:,1,1)      = current_state%zq(i_aitkensolmass)%data(:,jcol,icol)
 
  651     if (i_aitkensolmass>0)    daitkensolmass(:,1,1)     = current_state%sq(i_aitkensolmass)%data(:,jcol,icol)
 
  652     if (i_aitkensolnumber>0)   aitkensolnumber(:,1,1)    = current_state%zq(i_aitkensolnumber)%data(:,jcol,icol)
 
  653     if (i_aitkensolnumber>0)  daitkensolnumber(:,1,1)   = current_state%sq(i_aitkensolnumber)%data(:,jcol,icol)
 
  654     if (i_accumsolmass>0)      accumsolmass(:,1,1)       = current_state%zq(i_accumsolmass)%data(:,jcol,icol)
 
  655     if (i_accumsolmass>0)     daccumsolmass(:,1,1)      = current_state%sq(i_accumsolmass)%data(:,jcol,icol)
 
  656     if (i_accumsolnumber>0)    accumsolnumber(:,1,1)     = current_state%zq(i_accumsolnumber)%data(:,jcol,icol)
 
  657     if (i_accumsolnumber>0)   daccumsolnumber(:,1,1)    = current_state%sq(i_accumsolnumber)%data(:,jcol,icol)
 
  658     if (i_coarsesolmass>0)     coarsesolmass(:,1,1)      = current_state%zq(i_coarsesolmass)%data(:,jcol,icol)
 
  659     if (i_coarsesolmass>0)    dcoarsesolmass(:,1,1)     = current_state%sq(i_coarsesolmass)%data(:,jcol,icol)
 
  660     if (i_coarsesolnumber>0)   coarsesolnumber(:,1,1)    = current_state%zq(i_coarsesolnumber)%data(:,jcol,icol)
 
  661     if (i_coarsesolnumber>0)  dcoarsesolnumber(:,1,1)   = current_state%sq(i_coarsesolnumber)%data(:,jcol,icol)
 
  662     if (i_activesolliquid>0)   activesolliquid(:,1,1)    = current_state%zq(i_activesolliquid)%data(:,jcol,icol)
 
  663     if (i_activesolliquid>0)  dactivesolliquid(:,1,1)   = current_state%sq(i_activesolliquid)%data(:,jcol,icol)
 
  664     if (i_coarsedustmass>0)    coarsedustmass(:,1,1)     = current_state%zq(i_coarsedustmass)%data(:,jcol,icol)
 
  665     if (i_coarsedustmass>0)   dcoarsedustmass(:,1,1)    = current_state%sq(i_coarsedustmass)%data(:,jcol,icol)
 
  666     if (i_coarsedustnumber>0)  coarsedustnumber(:,1,1)   = current_state%zq(i_coarsedustnumber)%data(:,jcol,icol)
 
  667     if (i_coarsedustnumber>0) dcoarsedustnumber(:,1,1)  = current_state%sq(i_coarsedustnumber)%data(:,jcol,icol)
 
  668     if (i_activeinsolice>0)    activeinsolice(:,1,1)     = current_state%zq(i_activeinsolice)%data(:,jcol,icol)
 
  669     if (i_activeinsolice>0)   dactiveinsolice(:,1,1)    = current_state%sq(i_activeinsolice)%data(:,jcol,icol)
 
  670     if (i_activesolice>0)      activesolice(:,1,1)       = current_state%zq(i_activesolice)%data(:,jcol,icol)
 
  671     if (i_activesolice>0)     dactivesolice(:,1,1)      = current_state%sq(i_activesolice)%data(:,jcol,icol)
 
  672     if (i_activeinsolliquid>0) activeinsolliquid(:,1,1)  = current_state%zq(i_activeinsolliquid)%data(:,jcol,icol)
 
  673     if (i_activeinsolliquid>0)dactiveinsolliquid(:,1,1) = current_state%sq(i_activeinsolliquid)%data(:,jcol,icol)
 
  674     if (i_accuminsolmass>0)    accuminsolmass(:,1,1)     = current_state%zq(i_accuminsolmass)%data(:,jcol,icol)
 
  675     if (i_accuminsolmass>0)   daccuminsolmass(:,1,1)    = current_state%sq(i_accuminsolmass)%data(:,jcol,icol)
 
  676     if (i_accuminsolnumber>0)  accuminsolnumber(:,1,1)   = current_state%zq(i_accuminsolnumber)%data(:,jcol,icol)
 
  677     if (i_accuminsolnumber>0) daccuminsolnumber(:,1,1)  = current_state%sq(i_accuminsolnumber)%data(:,jcol,icol)
 
  678     if (i_activesolnumber>0)   activesolnumber(:,1,1)    = current_state%zq(i_activesolnumber)%data(:,jcol,icol)
 
  679     if (i_activesolnumber>0)  dactivesolnumber(:,1,1)   = current_state%sq(i_activesolnumber)%data(:,jcol,icol)
 
  680     if (i_activeinsolnumber>0) activeinsolnumber(:,1,1)  = current_state%zq(i_activeinsolnumber)%data(:,jcol,icol)
 
  681     if (i_activeinsolnumber>0)dactiveinsolnumber(:,1,1) = current_state%sq(i_activeinsolnumber)%data(:,jcol,icol)
 
  683     CALL shipway_microphysics(                     &
 
  695        aitkensolmass, aitkensolnumber,             &
 
  696        accumsolmass, accumsolnumber,               &
 
  697        coarsesolmass, coarsesolnumber,             &
 
  700        coarsedustmass, coarsedustnumber,           &
 
  717        dqv, dqc, dqr, dnc, dnr, dm3r,              &
 
  718        dqi, dqs, dqg, dni, dns, dng, dm3s, dm3g,   &
 
  720        daitkensolmass, daitkensolnumber,           &
 
  721        daccumsolmass, daccumsolnumber,             &
 
  722        dcoarsesolmass, dcoarsesolnumber,           &
 
  725        dcoarsedustmass, dcoarsedustnumber,         &
 
  728        dactiveinsolliquid,                         &
 
  732        dactiveinsolnumber,                         &
 
  740     current_state%sth%data(:,jcol,icol) = current_state%sth%data(:,jcol,icol) + dth(:,1,1)
 
  743     current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dqv(:,1,1)
 
  748       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dqc(:,1,1)
 
  753       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dqr(:,1,1)
 
  757       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dnc(:,1,1)
 
  761       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dnr(:,1,1)
 
  765       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dm3r(:,1,1)
 
  771       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dqi(:,1,1)
 
  775       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dqs(:,1,1)
 
  779       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dqg(:,1,1)
 
  783       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dni(:,1,1)
 
  787       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dns(:,1,1)
 
  791       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dng(:,1,1)
 
  795       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dm3s(:,1,1)
 
  799       current_state%sq(iqx)%data(:,jcol,icol) = current_state%sq(iqx)%data(:,jcol,icol) + dm3g(:,1,1)
 
  804     if (i_aitkensolmass>0)     current_state%sq(i_aitkensolmass)%data(:,jcol,icol) &
 
  805        = current_state%sq(i_aitkensolmass)%data(:,jcol,icol) + daitkensolmass(:,1,1)
 
  806     if (i_aitkensolnumber>0)   current_state%sq(i_aitkensolnumber)%data(:,jcol,icol) &
 
  807        =  current_state%sq(i_aitkensolnumber)%data(:,jcol,icol) + daitkensolnumber(:,1,1)
 
  808     if (i_accumsolmass>0)      current_state%sq(i_accumsolmass)%data(:,jcol,icol) &
 
  809        =  current_state%sq(i_accumsolmass)%data(:,jcol,icol) + daccumsolmass(:,1,1)
 
  810     if (i_accumsolnumber>0)    current_state%sq(i_accumsolnumber)%data(:,jcol,icol) &
 
  811        =  current_state%sq(i_accumsolnumber)%data(:,jcol,icol) + daccumsolnumber(:,1,1)
 
  812     if (i_coarsesolmass>0)     current_state%sq(i_coarsesolmass)%data(:,jcol,icol) &
 
  813        =  current_state%sq(i_coarsesolmass)%data(:,jcol,icol) + dcoarsesolmass(:,1,1)
 
  814     if (i_coarsesolnumber>0)   current_state%sq(i_coarsesolnumber)%data(:,jcol,icol) &
 
  815        =  current_state%sq(i_coarsesolnumber)%data(:,jcol,icol) + dcoarsesolnumber(:,1,1)
 
  816     if (i_activesolliquid>0)   current_state%sq(i_activesolliquid)%data(:,jcol,icol) &
 
  817        =  current_state%sq(i_activesolliquid)%data(:,jcol,icol) + dactivesolliquid(:,1,1)
 
  818     if (i_coarsedustmass>0)    current_state%sq(i_coarsedustmass)%data(:,jcol,icol) &
 
  819        =  current_state%sq(i_coarsedustmass)%data(:,jcol,icol) + dcoarsedustmass(:,1,1)
 
  820     if (i_coarsedustnumber>0)  current_state%sq(i_coarsedustnumber)%data(:,jcol,icol) &
 
  821        =  current_state%sq(i_coarsedustnumber)%data(:,jcol,icol) + dcoarsedustnumber(:,1,1)
 
  822     if (i_activeinsolice>0)    current_state%sq(i_activeinsolice)%data(:,jcol,icol) &
 
  823        =  current_state%sq(i_activeinsolice)%data(:,jcol,icol) + dactiveinsolice(:,1,1)
 
  824     if (i_activesolice>0)      current_state%sq(i_activesolice)%data(:,jcol,icol) &
 
  825        =  current_state%sq(i_activesolice)%data(:,jcol,icol) + dactivesolice(:,1,1)
 
  826     if (i_activeinsolliquid>0) current_state%sq(i_activeinsolliquid)%data(:,jcol,icol) &
 
  827        =  current_state%sq(i_activeinsolliquid)%data(:,jcol,icol) + dactiveinsolliquid(:,1,1)
 
  828     if (i_accuminsolmass>0)    current_state%sq(i_accuminsolmass)%data(:,jcol,icol) &
 
  829        =  current_state%sq(i_accuminsolmass)%data(:,jcol,icol) + daccuminsolmass(:,1,1)
 
  830     if (i_accuminsolnumber>0)  current_state%sq(i_accuminsolnumber)%data(:,jcol,icol) &
 
  831        =  current_state%sq(i_accuminsolnumber)%data(:,jcol,icol) + daccuminsolnumber(:,1,1)
 
  832     if (i_activesolnumber>0)   current_state%sq(i_activesolnumber)%data(:,jcol,icol) &
 
  833        =  current_state%sq(i_activesolnumber)%data(:,jcol,icol) + dactivesolnumber(:,1,1)
 
  834     if (i_activeinsolnumber>0) current_state%sq(i_activeinsolnumber)%data(:,jcol,icol) &
 
  835        =  current_state%sq(i_activeinsolnumber)%data(:,jcol,icol) + dactiveinsolnumber(:,1,1)
 
  842        surface_precip(target_y_index,target_x_index) = &
 
  843             casdiags % SurfaceRainR(1,1)
 
  845        surface_precip(target_y_index,target_x_index) = &
 
  846             casdiags % SurfaceRainR(1,1) + casdiags % SurfaceSnowR(1,1)
 
  848     call populate_casim_monc_dg(current_state, casdiags)