Is there a crossover operator to cross sections of specific phenotype genes?
Let's say you have two parents. For the sake of clarity, let's say that the first five alleles can be either '*' or '-', and the second five either 'x' or 'o'. Our parents might then look like the following.

- - - - - | + + + + +

x x x x x | o o o o o


I'm interpreting the question to mean that you want an operator which only operates on whole phenotypes. As far as I can see, there's only one way to do that, which is to do one-point crossover with the crossover point fixed to the boundary between the two parts.

I question whether this is a good idea. It's a very weak search operator, and in order for it to work reasonably well, I would guess you'd need a very high mutation rate to provide some search power and some sort of elitist selection to keep the mutation from killing your good solutions.

Without more information about your problem, it's hard to say for sure what your needs really are. However, the standard way of handling multiple phenotypic variables is to encode them into a single chromosome, as you've done, but then treat them as one string free of semantics. You just do whatever crossover operator you'd normally do. Yes, that means that your crossover might take part of one property mixed with part of another, but that's what happens in biology as well. In my example, no matter where you put the crossover point, you still get valid offspring. You might do uniform crossover and get children like

- x x - x | o + + o +

x - - x - | + o o + o


but those are perfectly valid offspring. The result is that crossover can explore a much wider part of the search space.

I'm not aware of a reference off the top of my head that compares the two ideas. Probably someone in the early days of GAs has looked at this. But unless you need to cite an authoritative source to justify your decision, I'd say just implement whichever version seems like the right answer for your problem. Both are trivial to code.