def update_global_map(global_map, map_update):
    """
    Maps an article copy to a source article in the global map. If the source article isn't found,
    adds the source article and copy to the global map.
    :param global_map: List of articles with associated copies
    :param map_update: Dictionary of data to update the global map
    :return: Updated list of articles
    """
    updated = False
    for article in global_map:
        if article['source_id'] == map_update['source_id']:
            article['copies'].append(map_update['copies'][0])
            updated = True
            break
    if updated is False:            # new source article
        global_map.append(map_update)
    return global_map