Calculating cup products using cellular cohomology Most algebraic topology books (for instance, Hatcher) contain a recipe for computing cup products in singular or simplicial homology.  In other words, given two explicit singular or simplicial cocycles, they contain a recipe for computing an explicit cocycle representing the cup product of the cocycles in question.
Is there a similar recipe in cellular cohomology?  In other words, if I have a very explicit CW complex and two explicit cellular cocycles, then is there a recipe for computing a cellular cocycle representing their cup product?
Of course, one answer is to subdivide everything up into a simplicial complex, but that is messy (and not always possible).  Is there a better way?
I'm especially interested in the special case of 2-dimensional CW complexes, where the only interesting cup products are between elements of $H^1$.
 A: A recipe is given in Whitney's 1937 paper "On Products in a Complex" (Annals of Mathematics, vol. 39, no 2). You can find a copy here.
In section 12 he gives a very explicit construction of the cap product for low-dimensional, regular complexes from which the cup product follows immediately (via Eqn 5.3 in the same paper).
A: Cup products $\cup: H^1(X,\mathbb{Z})\times H^1(X,\mathbb{Z}) \to H^2(X,\mathbb{Z})$ are easy to visualize. Given a cellular 2-complex $X$, the 1-skeleton of $X$ is a graph $\Gamma$, and the 2-skeleton is a collection of disks with boundaries attached to the graph $\Gamma$, which (up to homotopy) are encoded by closed paths in $\Gamma$. The 1-cycles $\alpha_1,\alpha_2 \in H^1(X,\mathbb{Z})$ are encoded by  maps $\alpha_i: X\to S^1=K(\mathbb{Z},1)$, and the 2-cycle $\alpha_1\cup\alpha_2$ is represented by the map $(\alpha_1\times\alpha_2)^{\ast}: H^2(S^1\times S^1)\to H^2(X)$. Choose the standard cell structure on $S^1 =c_0\cup c_1$. Subdivide $\Gamma$ by putting a vertex in the middle of each edge $e\subset \Gamma$ into intervals $e_1\cup e_2$. Then up to homotopy, we may assume that $\alpha_i$ sends $e_i$ to $c_0$ (and is extended over the 2-cells in any fashion). Then $$\alpha_1\times \alpha_2: \Gamma \to (c_0\times c_1\cup c_1\times c_0)= S^1 \vee S^1\subset S^1\times S^1,$$ in such a way that each edge $e_1$ is sent to a horizontal edge, and each edge $e_2$ is sent to a vertical edge. To figure out the degree of this map, for each 2-cell $f\subset X$, we lift $\alpha_1\times \alpha_2:\partial f\to \mathbb{R}^2$, the universal cover of $S^1\times S^1$. Then we compute the winding number of the path represented by $f$ with respect to the midpoints of the lattice $(\widetilde{S^1\vee S^1} \subset \mathbb{R}^2$ giving $\alpha_1\cup\alpha_2(f)$. For example, the closed path in this picture has winding number 7.
 (source: Wayback Machine)
A: It's easy to compute the cross product (i.e., the Kunneth map) $H^*X\otimes H^*Y\to H^*(X\times Y)$ in cellular homology, by means of the isomorphism $C_*X\otimes C_*Y\approx C_*(X\times Y)$ of complexes of cellular chains.  
The obstruction to obtaining a formula for the cup product is the fact that the diagonal embedding $d:X\to X\times X$ is not a cellular map.  The cellular approximation theorem tells you that $d$ is homotopic to some cellular map $f:X\to X\times X$, so cup product on cellular cochains is given by $C^*(X)\otimes C^*(X)\approx C^*(X\times X) \xrightarrow{f^\#} C^*(X)$.  
I'm unaware of any general "formula" to find $f$ (you'd have to construct it inductively, one dimension at a time).  But with only 2-dimensions, this shouldn't be at all bad (in any case, the calculation of the cup product $H^1\times H^1\to H^2$ mainly only depends on the fundamental group of $X$, since the map $X\to K(\pi_1X,1)$ inducing an isomorphism on $\pi_1$ also induces an isomorphism in $H^1$, .)
A: Cup products in a 2-dimensional CW complex with a single 0-cell should be computable directly from the definitions, once one knows how the 2-cells attach to the 1-cells.  There is a discussion of this in the first chapter of Roger Fenn's book "Techniques of Geometric Topology" (Cambridge, 1983).  There are also a few examples worked out in my algebraic topology book near the beginning of section 3.2, where the idea is to subdivide to get a Delta-complex (mild generalization of a simplicial complex) by adding a new vertex in the center of each 2-cell, and then one can use the simplicial cup product.  The discussion in Fenn's book is more general than this, but he doesn't work out in detail the most general case.
